This is a first-pass exploration of some of the relationships among QTS data for the “Spiritual curiosity” interview.

Time praying & spiritual experiences

Requested by Josh

Time praying as indexed by prayfreqmin

How many minutes each day do you do that on average throughout the week? [use real world examples, ask alone? With others? Probe away– Answer with interviewer judgement for answers]

Spiritual experiences indexed by godvoxaloud

Some people say that they have heard God* speak out loud to them. Has this ever happened to you?

Ignoring unknown aesthetics: fill

Ignoring unknown aesthetics: fill


Call:
glm(formula = godvoxaloud_num ~ prayfreqmin + country, family = "binomial", 
    data = d1)

Deviance Residuals: 
   Min      1Q  Median      3Q     Max  
-1.703  -1.027  -0.455   1.032   2.154  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept)   -0.47926    0.13784  -3.477 0.000507 ***
prayfreqmin.L  0.73747    0.24453   3.016 0.002562 ** 
prayfreqmin.Q  0.54372    0.27178   2.001 0.045436 *  
prayfreqmin.C -0.35794    0.29205  -1.226 0.220347    
countryGH      0.97536    0.21961   4.441 8.94e-06 ***
countryTH      0.25817    0.26628   0.970 0.332274    
countryCH      0.30449    0.24600   1.238 0.215809    
countryVT      0.05578    0.25920   0.215 0.829609    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 446.17  on 328  degrees of freedom
Residual deviance: 385.93  on 321  degrees of freedom
AIC: 401.93

Number of Fisher Scoring iterations: 4

Spiritual experiences indexed by godviavisions

_Some people say that they have had a vision from God*—they have a picture, but it is like they see it with their eyes. Has anything like that happened to you?_

Ignoring unknown aesthetics: fill

Ignoring unknown aesthetics: fill


Call:
glm(formula = godviavisions_num ~ prayfreqmin + country, family = "binomial", 
    data = d2)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.8640  -1.0136  -0.5422   1.1679   2.0691  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept)    -0.6210     0.1361  -4.562 5.06e-06 ***
prayfreqmin.L   0.9386     0.2470   3.800 0.000145 ***
prayfreqmin.Q   0.8468     0.2739   3.092 0.001989 ** 
prayfreqmin.C   0.3692     0.2926   1.262 0.207031    
countryGH       1.0290     0.2239   4.597 4.29e-06 ***
countryTH       0.6839     0.2719   2.515 0.011894 *  
countryCH      -0.9077     0.2933  -3.095 0.001968 ** 
countryVT       0.1282     0.2570   0.499 0.617930    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 443.63  on 334  degrees of freedom
Residual deviance: 386.58  on 327  degrees of freedom
AIC: 402.58

Number of Fisher Scoring iterations: 4

Spiritual experiences indexed by godviabodyexperiences

Some people have particular experiences in your body that they associate with God* or spirit. Does that happen for you? [examples: warm hands, goosebumps, fire in the belly]

Ignoring unknown aesthetics: fill

Ignoring unknown aesthetics: fill


Call:
glm(formula = godviabodyexperiences_num ~ prayfreqmin + country, 
    family = "binomial", data = d3)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-2.0197  -1.1520   0.6754   0.8918   1.3475  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept)     0.7061     0.1332   5.302 1.14e-07 ***
prayfreqmin.L   0.5249     0.2378   2.207  0.02731 *  
prayfreqmin.Q   0.5157     0.2622   1.966  0.04926 *  
prayfreqmin.C   0.2188     0.2779   0.788  0.43096    
countryGH       0.5353     0.2375   2.254  0.02418 *  
countryTH       0.8843     0.3073   2.877  0.00401 ** 
countryCH      -0.4790     0.2488  -1.926  0.05415 .  
countryVT      -0.1303     0.2500  -0.521  0.60225    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 432.22  on 334  degrees of freedom
Residual deviance: 402.36  on 327  degrees of freedom
AIC: 418.36

Number of Fisher Scoring iterations: 4

Aggregate spiritual experiences score

Linear mixed model fit by REML ['lmerMod']
Formula: response ~ prayfreqmin + country + (1 | subject_name) + (1 |  
    question)
   Data: d_agg1

REML criterion at convergence: 9516

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-2.6638 -0.7863 -0.1873  0.8822  2.5579 

Random effects:
 Groups       Name        Variance Std.Dev.
 subject_name (Intercept) 0.02090  0.1446  
 question     (Intercept) 0.03517  0.1875  
 Residual                 0.17972  0.4239  
Number of obs: 7961, groups:  subject_name, 344; question, 24

Fixed effects:
               Estimate Std. Error t value
(Intercept)    0.459403   0.039550  11.616
prayfreqmin.L  0.117263   0.017788   6.592
prayfreqmin.Q  0.033800   0.019728   1.713
prayfreqmin.C  0.048443   0.021485   2.255
countryGH      0.024153   0.016975   1.423
countryTH      0.001581   0.020844   0.076
countryCH     -0.086277   0.019517  -4.421
countryVT      0.155426   0.019417   8.005

Correlation of Fixed Effects:
            (Intr) pryf.L pryf.Q pryf.C cntrGH cntrTH cntrCH
prayfrqmn.L  0.035                                          
prayfrqmn.Q -0.066  0.174                                   
prayfrqmn.C  0.024 -0.164 -0.026                            
countryGH   -0.045 -0.099  0.114  0.118                     
countryTH    0.034  0.240  0.040 -0.020 -0.259              
countryCH    0.014 -0.076 -0.095 -0.034 -0.227 -0.305       
countryVT    0.004 -0.045  0.058 -0.022 -0.209 -0.299 -0.278
Linear mixed model fit by REML ['lmerMod']
Formula: response ~ prayfreqmin * country + (1 | subject_name) + (1 |  
    question)
   Data: d_agg1

REML criterion at convergence: 9563.5

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-2.6672 -0.7887 -0.1796  0.8787  2.5708 

Random effects:
 Groups       Name        Variance Std.Dev.
 subject_name (Intercept) 0.02118  0.1455  
 question     (Intercept) 0.03517  0.1875  
 Residual                 0.17973  0.4239  
Number of obs: 7961, groups:  subject_name, 344; question, 24

Fixed effects:
                         Estimate Std. Error t value
(Intercept)              0.458378   0.039986  11.463
prayfreqmin.L            0.108947   0.022863   4.765
prayfreqmin.Q            0.026234   0.023102   1.136
prayfreqmin.C            0.042343   0.023338   1.814
countryGH                0.027652   0.018607   1.486
countryTH               -0.012737   0.030968  -0.411
countryCH               -0.075852   0.022478  -3.374
countryVT                0.153817   0.020838   7.381
prayfreqmin.L:countryGH  0.006461   0.035854   0.180
prayfreqmin.Q:countryGH  0.003627   0.037213   0.097
prayfreqmin.C:countryGH  0.023226   0.038524   0.603
prayfreqmin.L:countryTH -0.039139   0.069967  -0.559
prayfreqmin.Q:countryTH -0.016074   0.061933  -0.260
prayfreqmin.C:countryTH  0.009706   0.052689   0.184
prayfreqmin.L:countryCH -0.029814   0.038224  -0.780
prayfreqmin.Q:countryCH -0.039246   0.044956  -0.873
prayfreqmin.C:countryCH  0.018775   0.050805   0.370
prayfreqmin.L:countryVT -0.012807   0.039717  -0.322
prayfreqmin.Q:countryVT  0.036971   0.041676   0.887
prayfreqmin.C:countryVT  0.035715   0.043548   0.820

Correlation matrix not shown by default, as p = 20 > 12.
Use print(x, correlation=TRUE)  or
     vcov(x)     if you need it

refitting model(s) with ML (instead of REML)
Data: d_agg1
Models:
r_agg1: response ~ prayfreqmin + country + (1 | subject_name) + (1 | 
r_agg1:     question)
r_agg2: response ~ prayfreqmin * country + (1 | subject_name) + (1 | 
r_agg2:     question)
       Df    AIC    BIC  logLik deviance Chisq Chi Df Pr(>Chisq)
r_agg1 11 9489.8 9566.6 -4733.9   9467.8                        
r_agg2 23 9504.7 9665.3 -4729.3   9458.7 9.134     12     0.6914
Ignoring unknown aesthetics: y

Looking just at ‘apples’ (urban charismatics)

Looking at all charismatics

Doubt & external sensory experiences

Requested by Emily, John

“Doubt” indxed by selfunsuregodreal

Has there been a time when you yourself wondered whether God* was real?

Spiritual experiences indexed by godvoxaloud

Some people say that they have heard God* speak out loud to them. Has this ever happened to you?

Ignoring unknown aesthetics: fill

Ignoring unknown aesthetics: fill


Call:
glm(formula = godvoxaloud_num ~ selfunsuregodreal + country, 
    family = "binomial", data = d4)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.4270  -1.0266  -0.5155   0.9986   2.0415  

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)        -0.47400    0.12983  -3.651 0.000261 ***
selfunsuregodrealY -0.06683    0.13151  -0.508 0.611315    
countryGH           0.97704    0.21634   4.516 6.29e-06 ***
countryTH           0.01075    0.26818   0.040 0.968028    
countryCH           0.38097    0.24572   1.550 0.121032    
countryVT           0.04141    0.26124   0.159 0.874046    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 426.65  on 313  degrees of freedom
Residual deviance: 381.81  on 308  degrees of freedom
AIC: 393.81

Number of Fisher Scoring iterations: 4

Spiritual experiences indexed by godviavisions

_Some people say that they have had a vision from God*—they have a picture, but it is like they see it with their eyes. Has anything like that happened to you?_

Ignoring unknown aesthetics: fill

Ignoring unknown aesthetics: fill


Call:
glm(formula = godviavisions_num ~ selfunsuregodreal + country, 
    family = "binomial", data = d5)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.3530  -0.9346  -0.6884   1.0629   1.8214  

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)        -0.61222    0.12652  -4.839 1.30e-06 ***
selfunsuregodrealY  0.06415    0.13016   0.493   0.6221    
countryGH           0.95182    0.21279   4.473 7.71e-06 ***
countryTH           0.33395    0.26614   1.255   0.2096    
countryCH          -0.58890    0.27649  -2.130   0.0332 *  
countryVT           0.07429    0.25358   0.293   0.7696    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 422.46  on 318  degrees of freedom
Residual deviance: 391.05  on 313  degrees of freedom
AIC: 403.05

Number of Fisher Scoring iterations: 4

Spiritual experiences indexed by godviabodyexperiences

Some people have particular experiences in your body that they associate with God* or spirit. Does that happen for you? [examples: warm hands, goosebumps, fire in the belly]

Ignoring unknown aesthetics: fill

Ignoring unknown aesthetics: fill


Call:
glm(formula = godviabodyexperiences_num ~ selfunsuregodreal + 
    country, family = "binomial", data = d6)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.8606  -1.2321   0.6274   0.9309   1.2922  

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)          0.7056     0.1277   5.523 3.33e-08 ***
selfunsuregodrealY   0.2421     0.1317   1.839   0.0659 .  
countryGH            0.5778     0.2363   2.446   0.0145 *  
countryTH            0.5884     0.3089   1.905   0.0568 .  
countryCH           -0.3357     0.2470  -1.359   0.1742    
countryVT           -0.1013     0.2519  -0.402   0.6876    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 411.83  on 319  degrees of freedom
Residual deviance: 390.07  on 314  degrees of freedom
AIC: 402.07

Number of Fisher Scoring iterations: 4

“Doubt” indxed by morequesmoreanswr

Do you think that the more spiritually mature you become, you will discover more questions or more answers?

Spiritual experiences indexed by godvoxaloud

Some people say that they have heard God* speak out loud to them. Has this ever happened to you?

Ignoring unknown aesthetics: fill

Ignoring unknown aesthetics: fill


Call:
glm(formula = godvoxaloud_num ~ morequesmoreanswr + country, 
    family = "binomial", data = d7)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.4044  -0.9984  -0.4288   0.9900   2.2055  

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)        -0.65574    0.16797  -3.904 9.46e-05 ***
morequesmoreanswrQ -0.03057    0.15819  -0.193    0.847    
countryGH           1.14447    0.23706   4.828 1.38e-06 ***
countryTH           0.18839    0.31250   0.603    0.547    
countryCH           0.28946    0.33757   0.857    0.391    
countryVT           0.03154    0.32558   0.097    0.923    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 325.90  on 241  degrees of freedom
Residual deviance: 280.75  on 236  degrees of freedom
AIC: 292.75

Number of Fisher Scoring iterations: 4

Spiritual experiences indexed by godviavisions

_Some people say that they have had a vision from God*—they have a picture, but it is like they see it with their eyes. Has anything like that happened to you?_

Ignoring unknown aesthetics: fill

Ignoring unknown aesthetics: fill


Call:
glm(formula = godviavisions_num ~ morequesmoreanswr + country, 
    family = "binomial", data = d8)

Deviance Residuals: 
   Min      1Q  Median      3Q     Max  
-1.388  -1.039  -0.616   1.127   2.026  

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)         -0.6647     0.1687  -3.939 8.18e-05 ***
morequesmoreanswrQ   0.1811     0.1525   1.188   0.2349    
countryGH            0.9661     0.2353   4.106 4.03e-05 ***
countryTH            0.5124     0.3171   1.616   0.1061    
countryCH           -1.0697     0.4511  -2.372   0.0177 *  
countryVT            0.3111     0.3162   0.984   0.3251    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 325.22  on 242  degrees of freedom
Residual deviance: 295.17  on 237  degrees of freedom
AIC: 307.17

Number of Fisher Scoring iterations: 4

Spiritual experiences indexed by godviabodyexperiences

Some people have particular experiences in your body that they associate with God* or spirit. Does that happen for you? [examples: warm hands, goosebumps, fire in the belly]

Ignoring unknown aesthetics: fill

Ignoring unknown aesthetics: fill


Call:
glm(formula = godviabodyexperiences_num ~ morequesmoreanswr + 
    country, family = "binomial", data = d9)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.9152  -1.2161   0.7310   0.9641   1.1674  

Coefficients:
                   Estimate Std. Error z value Pr(>|z|)    
(Intercept)         0.71079    0.15975   4.449 8.62e-06 ***
morequesmoreanswrQ  0.03348    0.15584   0.215   0.8299    
countryGH           0.43886    0.24850   1.766   0.0774 .  
countryTH           0.91566    0.38084   2.404   0.0162 *  
countryCH          -0.54853    0.33456  -1.640   0.1011    
countryVT          -0.15232    0.30627  -0.497   0.6190    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 310.96  on 244  degrees of freedom
Residual deviance: 294.81  on 239  degrees of freedom
AIC: 306.81

Number of Fisher Scoring iterations: 4

To do

Here are other things on our to-do list:

LS0tCnRpdGxlOiAnUVRTIGRhdGE6IFNwaXJpdHVhbCBjdXJpb3NpdHkgcmVsYXRpb25zaGlwcycKc3VidGl0bGU6ICdMYXN0IHVwZGF0ZWQgMjAxOC0wNC0xMicKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6IAogICAgdG9jOiB0cnVlCiAgaHRtbF9kb2N1bWVudDoKICAgIGRmX3ByaW50OiBwYWdlZAogIHBkZl9kb2N1bWVudDogZGVmYXVsdAotLS0KCmBgYHtyLCBpbmNsdWRlID0gRn0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFKQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gRn0KIyBsb2FkIHBhY2thZ2VzCmxpYnJhcnkocmVhZHhsKQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShybXMpCmxpYnJhcnkoa25pdHIpCmxpYnJhcnkoa2FibGVFeHRyYSkKbGlicmFyeShvcmRpbmFsKQpsaWJyYXJ5KGxtZTQpCgojIHJ1biBzZXR1cCBzY3JpcHQKc291cmNlKCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvVGVtcGxldG9uIEdyYW50L0RBVEEgV1JBTkdMSU5HL3RlbXBsZXRvbl9xdHMvc2NyaXB0cy9zZXR1cF9xdHNfa3cuUiIpCgojIHJ1biBkYXRhIHdyYW5nbGluZyBzY3JpcHQKc291cmNlKCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvVGVtcGxldG9uIEdyYW50L0RBVEEgV1JBTkdMSU5HL3RlbXBsZXRvbl9xdHMvc2NyaXB0cy93cmFuZ2xpbmdfcXRzX2t3LlIiKQoKIyBydW4gZGF0YSBjYXRlZ29yaXphdGlvbiBzY3JpcHQKc291cmNlKCIvVXNlcnMva3dlaXNtYW4vRG9jdW1lbnRzL1Jlc2VhcmNoIChTdGFuZm9yZCkvUHJvamVjdHMvVGVtcGxldG9uIEdyYW50L0RBVEEgV1JBTkdMSU5HL3RlbXBsZXRvbl9xdHMvc2NyaXB0cy9jYXRlZ29yaWVzX3F0c19rdy5SIikKCiMgc2V0IGtleQprZXkgPC0ga2V5X3NjCmBgYAoKVGhpcyBpcyBhIGZpcnN0LXBhc3MgZXhwbG9yYXRpb24gb2Ygc29tZSBvZiB0aGUgcmVsYXRpb25zaGlwcyBhbW9uZyBRVFMgZGF0YSBmb3IgdGhlICJTcGlyaXR1YWwgY3VyaW9zaXR5IiBpbnRlcnZpZXcuCgojIFRpbWUgcHJheWluZyAmIHNwaXJpdHVhbCBleHBlcmllbmNlcwoqUmVxdWVzdGVkIGJ5IEpvc2gqCgojIyBUaW1lIHByYXlpbmcgYXMgaW5kZXhlZCBieSBgcHJheWZyZXFtaW5gCl9Ib3cgbWFueSBtaW51dGVzIGVhY2ggZGF5IGRvIHlvdSBkbyB0aGF0IG9uIGF2ZXJhZ2UgdGhyb3VnaG91dCB0aGUgd2Vlaz8gW3VzZSByZWFsIHdvcmxkIGV4YW1wbGVzLCBhc2sgYWxvbmU/IFdpdGggb3RoZXJzPyBQcm9iZSBhd2F5LS0gQW5zd2VyIHdpdGggaW50ZXJ2aWV3ZXIganVkZ2VtZW50IGZvciBhbnN3ZXJzXV8KCmBgYHtyfQpwcmF5ZnJlcW1pbl9jb3VudCA8LSBkICU+JQogIGZpbHRlcighaXMubmEocHJheWZyZXFtaW4pLCAhaXMubmEoZ29kdm94YWxvdWQpLAogICAgICAgICBwcmF5ZnJlcW1pbiAhPSAiT3RoZXIiLCBnb2R2b3hhbG91ZCAhPSAiT3RoZXIiKSAlPiUKICBjb3VudChjb3VudHJ5LCBwcmF5ZnJlcW1pbikgJT4lCiAgZGF0YS5mcmFtZSgpCgpwcmF5ZnJlcW1pbl9jb3VudF9ieV9xdWFkIDwtIGQgJT4lCiAgZmlsdGVyKCFpcy5uYShwcmF5ZnJlcW1pbiksICFpcy5uYShnb2R2b3hhbG91ZCksCiAgICAgICAgIHByYXlmcmVxbWluICE9ICJPdGhlciIsIGdvZHZveGFsb3VkICE9ICJPdGhlciIpICU+JQogIGNvdW50KGNvdW50cnksIHVyYmFuX3J1cmFsLCBjaGFyaXNtYXRpY19sb2NhbCwgcHJheWZyZXFtaW4pICU+JQogIGRhdGEuZnJhbWUoKQpgYGAKCiMjIyBTcGlyaXR1YWwgZXhwZXJpZW5jZXMgaW5kZXhlZCBieSBgZ29kdm94YWxvdWRgCl9Tb21lIHBlb3BsZSBzYXkgdGhhdCB0aGV5IGhhdmUgaGVhcmQgR29kKiBzcGVhayBvdXQgbG91ZCB0byB0aGVtLiBIYXMgdGhpcyBldmVyIGhhcHBlbmVkIHRvIHlvdT9fCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CmQgJT4lCiAgZmlsdGVyKCFpcy5uYShwcmF5ZnJlcW1pbiksICFpcy5uYShnb2R2b3hhbG91ZCkpICU+JSAjLAogICAgICAgICAjIHByYXlmcmVxbWluICE9ICJPdGhlciIsIGdvZHZveGFsb3VkICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IHByYXlmcmVxbWluLCB5ID0gZ29kdm94YWxvdWQsIGNvbG9yID0gcmVzZWFyY2hlcikpICsKICBmYWNldF9ncmlkKHVyYmFuX3J1cmFsIH4gY2hhcmlzbWF0aWNfbG9jYWwgfiBjb3VudHJ5KSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuMywgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXIoMC4yLCAwLjIpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGN1c3RvbV9wYWwpICsKICBsYWJzKHRpdGxlID0gcGFzdGUoInByYXlmcmVxbWluIiwgImdvZHZveGFsb3VkIiwgc2VwID0gIiB4ICIpLAogICAgICAgIyBzdWJ0aXRsZSA9ICJFeGNsdWRpbmcgcGVvcGxlIHdobyBkaWQgbm90IGhhdmUgYSBjbGVhciBhbnN3ZXIiLAogICAgICAgeCA9ICJwcmF5ZnJlcW1pbiIsCiAgICAgICB5ID0gImdvZHZveGFsb3VkIiwKICAgICAgIGNvbG9yID0gIlJlc2VhcmNoZXIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBndWlkZXMoY29sb3IgPSBndWlkZV9sZWdlbmQobmNvbCA9IDYsIGJ5cm93ID0gVFJVRSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlLmFlcyA9IGxpc3QoYWxwaGEgPSAxKSkpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpkICU+JQogIGZpbHRlcighaXMubmEocHJheWZyZXFtaW4pLCAhaXMubmEoZ29kdm94YWxvdWQpLAogICAgICAgICBwcmF5ZnJlcW1pbiAhPSAiT3RoZXIiLCBnb2R2b3hhbG91ZCAhPSAiT3RoZXIiKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBwcmF5ZnJlcW1pbiwgYWxwaGEgPSBnb2R2b3hhbG91ZCwgZmlsbCA9IHJlc2VhcmNoZXIpKSArCiAgZmFjZXRfZ3JpZCh1cmJhbl9ydXJhbCB+IGNoYXJpc21hdGljX2xvY2FsIH4gY291bnRyeSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBwcmF5ZnJlcW1pbl9jb3VudF9ieV9xdWFkLAogICAgICAgICAgICBhZXMoeCA9IHByYXlmcmVxbWluLCB5ID0gMSwgYWxwaGEgPSBOVUxMLCBmaWxsID0gTlVMTCwKICAgICAgICAgICAgICAgIGxhYmVsID0gcGFzdGUwKCIobj0iLCBuLCAiKSIpKSwKICAgICAgICAgICAgc2l6ZSA9IDIsIG51ZGdlX3kgPSAwLjA1KSArCiAgIyBzY2FsZV9maWxsX2JyZXdlcihndWlkZSA9IE5VTEwsIHBhbGV0dGUgPSAiRGFyazIiKSArCiAgc2NhbGVfZmlsbF9tYW51YWwoZ3VpZGUgPSBOVUxMLCB2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUocmFuZ2UgPSBjKDAuNSwgMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJwcmF5ZnJlcW1pbiIsICJnb2R2b3hhbG91ZCIsIHNlcCA9ICIgeCAiKSwKICAgICAgIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInByYXlmcmVxbWluIiwKICAgICAgIHkgPSAiUHJvcG9ydGlvbiIsCiAgICAgICBhbHBoYSA9ICJnb2R2b3hhbG91ZCIsCiAgICAgICBmaWxsID0gIlJlc2VhcmNoZXIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBndWlkZXMoYWxwaGEgPSBndWlkZV9sZWdlbmQoKSwKICAgICAgICAgZmlsbCA9ICJub25lIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDAuNX0KZCAlPiUKICBmaWx0ZXIoIWlzLm5hKHByYXlmcmVxbWluKSwgIWlzLm5hKGdvZHZveGFsb3VkKSwKICAgICAgICAgcHJheWZyZXFtaW4gIT0gIk90aGVyIiwgZ29kdm94YWxvdWQgIT0gIk90aGVyIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gcHJheWZyZXFtaW4sIGFscGhhID0gZ29kdm94YWxvdWQsIGZpbGwgPSBjb3VudHJ5KSkgKwogIGZhY2V0X2dyaWQoLiB+IGNvdW50cnkpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKwogIGdlb21fdGV4dChkYXRhID0gcHJheWZyZXFtaW5fY291bnQsCiAgICAgICAgICAgIGFlcyh4ID0gcHJheWZyZXFtaW4sIHkgPSAxLCBhbHBoYSA9IE5VTEwsIGZpbGwgPSBOVUxMLAogICAgICAgICAgICAgICAgbGFiZWwgPSBwYXN0ZTAoIihuPSIsIG4sICIpIikpLAogICAgICAgICAgICBzaXplID0gMiwgbnVkZ2VfeSA9IDAuMDUpICsKICBzY2FsZV9maWxsX2JyZXdlcihndWlkZSA9IE5VTEwsIHBhbGV0dGUgPSAiRGFyazIiKSArCiAgIyBzY2FsZV9maWxsX21hbnVhbChndWlkZSA9IE5VTEwsIHZhbHVlcyA9IGN1c3RvbV9wYWwpICsKICBzY2FsZV9hbHBoYV9kaXNjcmV0ZShyYW5nZSA9IGMoMC41LCAxKSkgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMSwgMC4yNSkpICsKICBsYWJzKHRpdGxlID0gcGFzdGUoInByYXlmcmVxbWluIiwgImdvZHZveGFsb3VkIiwgc2VwID0gIiB4ICIpLAogICAgICAgc3VidGl0bGUgPSAiRXhjbHVkaW5nIHBlb3BsZSB3aG8gZGlkIG5vdCBoYXZlIGEgY2xlYXIgYW5zd2VyIiwKICAgICAgIHggPSAicHJheWZyZXFtaW4iLAogICAgICAgeSA9ICJQcm9wb3J0aW9uIiwKICAgICAgIGFscGhhID0gImdvZHZveGFsb3VkIiwKICAgICAgIGZpbGwgPSAiUmVzZWFyY2hlciIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGd1aWRlcyhhbHBoYSA9IGd1aWRlX2xlZ2VuZCgpLAogICAgICAgICBmaWxsID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpkMSA8LSBkICU+JQogIGZpbHRlcighaXMubmEocHJheWZyZXFtaW4pLCAhaXMubmEoZ29kdm94YWxvdWQpLAogICAgICAgICBwcmF5ZnJlcW1pbiAhPSAiT3RoZXIiLCBnb2R2b3hhbG91ZCAhPSAiT3RoZXIiKSAlPiUKICBtdXRhdGUocHJheWZyZXFtaW5fbnVtID0gYXMubnVtZXJpYyhwcmF5ZnJlcW1pbikgLSAxLAogICAgICAgICBnb2R2b3hhbG91ZCA9IGZhY3Rvcihnb2R2b3hhbG91ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIk5vIiwgIlllcyIpKSwKICAgICAgICAgZ29kdm94YWxvdWRfbnVtID0gYXMubnVtZXJpYyhnb2R2b3hhbG91ZCkgLSAxKSAlPiUKICBzZWxlY3QoY291bnRyeSwgcmVzZWFyY2hlciwgdXJiYW5fcnVyYWwsIGNoYXJpc21hdGljX2xvY2FsLCBzdWJqZWN0X25hbWUsCiAgICAgICAgIHN0YXJ0c193aXRoKCJwcmF5ZnJlcW1pbiIpLCBzdGFydHNfd2l0aCgiZ29kdm94YWxvdWQiKSkKCmNvbnRyYXN0cyhkMSRjb3VudHJ5KSA8LSBjYmluZCgiR0giID0gYygtMSwgMSwgMCwgMCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVEgiID0gYygtMSwgMCwgMSwgMCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ0giID0gYygtMSwgMCwgMCwgMSwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVlQiID0gYygtMSwgMCwgMCwgMCwgMSkpCmNvbnRyYXN0cyhkMSRwcmF5ZnJlcW1pbikgPC0gY29udHIucG9seSg0KQoKcjEgPC0gZ2xtKGdvZHZveGFsb3VkX251bSB+IHByYXlmcmVxbWluICsgY291bnRyeSwKICAgICAgICAgICAgICAgICAgZmFtaWx5ID0gImJpbm9taWFsIiwgZGF0YSA9IGQxKQpzdW1tYXJ5KHIxKQpgYGAKCiMjIyBTcGlyaXR1YWwgZXhwZXJpZW5jZXMgaW5kZXhlZCBieSBgZ29kdmlhdmlzaW9uc2AKX1NvbWUgcGVvcGxlIHNheSB0aGF0IHRoZXkgaGF2ZSBoYWQgYSB2aXNpb24gZnJvbSBHb2Qq4oCUdGhleSBoYXZlIGEgcGljdHVyZSwgYnV0IGl0IGlzIGxpa2UgdGhleSBzZWUgaXQgd2l0aCB0aGVpciBleWVzLiBIYXMgYW55dGhpbmcgbGlrZSB0aGF0IGhhcHBlbmVkIHRvIHlvdT9fCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CmQgJT4lCiAgZmlsdGVyKCFpcy5uYShwcmF5ZnJlcW1pbiksICFpcy5uYShnb2R2aWF2aXNpb25zKSkgJT4lICMsCiAgICAgICAgICMgcHJheWZyZXFtaW4gIT0gIk90aGVyIiwgZ29kdmlhdmlzaW9ucyAhPSAiT3RoZXIiKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBwcmF5ZnJlcW1pbiwgeSA9IGdvZHZpYXZpc2lvbnMsIGNvbG9yID0gcmVzZWFyY2hlcikpICsKICBmYWNldF9ncmlkKHVyYmFuX3J1cmFsIH4gY2hhcmlzbWF0aWNfbG9jYWwgfiBjb3VudHJ5KSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuMywgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXIoMC4yLCAwLjIpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGN1c3RvbV9wYWwpICsKICBsYWJzKHRpdGxlID0gcGFzdGUoInByYXlmcmVxbWluIiwgImdvZHZpYXZpc2lvbnMiLCBzZXAgPSAiIHggIiksCiAgICAgICAjIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInByYXlmcmVxbWluIiwKICAgICAgIHkgPSAiZ29kdmlhdmlzaW9ucyIsCiAgICAgICBjb2xvciA9ICJSZXNlYXJjaGVyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKG5jb2wgPSA2LCBieXJvdyA9IFRSVUUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZS5hZXMgPSBsaXN0KGFscGhhID0gMSkpKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KZCAlPiUKICBmaWx0ZXIoIWlzLm5hKHByYXlmcmVxbWluKSwgIWlzLm5hKGdvZHZpYXZpc2lvbnMpLAogICAgICAgICBwcmF5ZnJlcW1pbiAhPSAiT3RoZXIiLCBnb2R2aWF2aXNpb25zICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IHByYXlmcmVxbWluLCBhbHBoYSA9IGdvZHZpYXZpc2lvbnMsIGZpbGwgPSByZXNlYXJjaGVyKSkgKwogIGZhY2V0X2dyaWQodXJiYW5fcnVyYWwgfiBjaGFyaXNtYXRpY19sb2NhbCB+IGNvdW50cnkpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKwogIGdlb21fdGV4dChkYXRhID0gcHJheWZyZXFtaW5fY291bnRfYnlfcXVhZCwKICAgICAgICAgICAgYWVzKHggPSBwcmF5ZnJlcW1pbiwgeSA9IDEsIGFscGhhID0gTlVMTCwgZmlsbCA9IE5VTEwsCiAgICAgICAgICAgICAgICBsYWJlbCA9IHBhc3RlMCgiKG49IiwgbiwgIikiKSksCiAgICAgICAgICAgIHNpemUgPSAyLCBudWRnZV95ID0gMC4wNSkgKwogICMgc2NhbGVfZmlsbF9icmV3ZXIoZ3VpZGUgPSBOVUxMLCBwYWxldHRlID0gIkRhcmsyIikgKwogIHNjYWxlX2ZpbGxfbWFudWFsKGd1aWRlID0gTlVMTCwgdmFsdWVzID0gY3VzdG9tX3BhbCkgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKHJhbmdlID0gYygwLjUsIDEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjI1KSkgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgicHJheWZyZXFtaW4iLCAiZ29kdmlhdmlzaW9ucyIsIHNlcCA9ICIgeCAiKSwKICAgICAgIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInByYXlmcmVxbWluIiwKICAgICAgIHkgPSAiUHJvcG9ydGlvbiIsCiAgICAgICBhbHBoYSA9ICJnb2R2aWF2aXNpb25zIiwKICAgICAgIGZpbGwgPSAiUmVzZWFyY2hlciIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGd1aWRlcyhhbHBoYSA9IGd1aWRlX2xlZ2VuZCgpLAogICAgICAgICBmaWxsID0gIm5vbmUiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC41fQpkICU+JQogIGZpbHRlcighaXMubmEocHJheWZyZXFtaW4pLCAhaXMubmEoZ29kdmlhdmlzaW9ucyksCiAgICAgICAgIHByYXlmcmVxbWluICE9ICJPdGhlciIsIGdvZHZpYXZpc2lvbnMgIT0gIk90aGVyIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gcHJheWZyZXFtaW4sIGFscGhhID0gZ29kdmlhdmlzaW9ucywgZmlsbCA9IGNvdW50cnkpKSArCiAgZmFjZXRfZ3JpZCguIH4gY291bnRyeSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBwcmF5ZnJlcW1pbl9jb3VudCwKICAgICAgICAgICAgYWVzKHggPSBwcmF5ZnJlcW1pbiwgeSA9IDEsIGFscGhhID0gTlVMTCwgZmlsbCA9IE5VTEwsCiAgICAgICAgICAgICAgICBsYWJlbCA9IHBhc3RlMCgiKG49IiwgbiwgIikiKSksCiAgICAgICAgICAgIHNpemUgPSAyLCBudWRnZV95ID0gMC4wNSkgKwogIHNjYWxlX2ZpbGxfYnJld2VyKGd1aWRlID0gTlVMTCwgcGFsZXR0ZSA9ICJEYXJrMiIpICsKICAjIHNjYWxlX2ZpbGxfbWFudWFsKGd1aWRlID0gTlVMTCwgdmFsdWVzID0gY3VzdG9tX3BhbCkgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKHJhbmdlID0gYygwLjUsIDEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjI1KSkgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgicHJheWZyZXFtaW4iLCAiZ29kdmlhdmlzaW9ucyIsIHNlcCA9ICIgeCAiKSwKICAgICAgIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInByYXlmcmVxbWluIiwKICAgICAgIHkgPSAiUHJvcG9ydGlvbiIsCiAgICAgICBhbHBoYSA9ICJnb2R2aWF2aXNpb25zIiwKICAgICAgIGZpbGwgPSAiUmVzZWFyY2hlciIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGd1aWRlcyhhbHBoYSA9IGd1aWRlX2xlZ2VuZCgpLAogICAgICAgICBmaWxsID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpkMiA8LSBkICU+JQogIGZpbHRlcighaXMubmEocHJheWZyZXFtaW4pLCAhaXMubmEoZ29kdmlhdmlzaW9ucyksCiAgICAgICAgIHByYXlmcmVxbWluICE9ICJPdGhlciIsIGdvZHZpYXZpc2lvbnMgIT0gIk90aGVyIikgJT4lCiAgbXV0YXRlKHByYXlmcmVxbWluX251bSA9IGFzLm51bWVyaWMocHJheWZyZXFtaW4pIC0gMSwKICAgICAgICAgZ29kdmlhdmlzaW9ucyA9IGZhY3Rvcihnb2R2aWF2aXNpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiTm8iLCAiWWVzIikpLAogICAgICAgICBnb2R2aWF2aXNpb25zX251bSA9IGFzLm51bWVyaWMoZ29kdmlhdmlzaW9ucykgLSAxKSAlPiUKICBzZWxlY3QoY291bnRyeSwgcmVzZWFyY2hlciwgdXJiYW5fcnVyYWwsIGNoYXJpc21hdGljX2xvY2FsLCBzdWJqZWN0X25hbWUsCiAgICAgICAgIHN0YXJ0c193aXRoKCJwcmF5ZnJlcW1pbiIpLCBzdGFydHNfd2l0aCgiZ29kdmlhdmlzaW9ucyIpKQoKY29udHJhc3RzKGQyJGNvdW50cnkpIDwtIGNiaW5kKCJHSCIgPSBjKC0xLCAxLCAwLCAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUSCIgPSBjKC0xLCAwLCAxLCAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDSCIgPSBjKC0xLCAwLCAwLCAxLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWVCIgPSBjKC0xLCAwLCAwLCAwLCAxKSkKY29udHJhc3RzKGQyJHByYXlmcmVxbWluKSA8LSBjb250ci5wb2x5KDQpCgpyMiA8LSBnbG0oZ29kdmlhdmlzaW9uc19udW0gfiBwcmF5ZnJlcW1pbiArIGNvdW50cnksCiAgICAgICAgICAgICAgICAgIGZhbWlseSA9ICJiaW5vbWlhbCIsIGRhdGEgPSBkMikKc3VtbWFyeShyMikKYGBgCgojIyMgU3Bpcml0dWFsIGV4cGVyaWVuY2VzIGluZGV4ZWQgYnkgYGdvZHZpYWJvZHlleHBlcmllbmNlc2AKX1NvbWUgcGVvcGxlIGhhdmUgcGFydGljdWxhciBleHBlcmllbmNlcyBpbiB5b3VyIGJvZHkgdGhhdCB0aGV5IGFzc29jaWF0ZSB3aXRoIEdvZCogb3Igc3Bpcml0LiBEb2VzIHRoYXQgaGFwcGVuIGZvciB5b3U/IFtleGFtcGxlczogd2FybSBoYW5kcywgZ29vc2VidW1wcywgZmlyZSBpbiB0aGUgYmVsbHldXwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpkICU+JQogIGZpbHRlcighaXMubmEocHJheWZyZXFtaW4pLCAhaXMubmEoZ29kdmlhYm9keWV4cGVyaWVuY2VzKSkgJT4lICMsCiAgICAgICAgICMgcHJheWZyZXFtaW4gIT0gIk90aGVyIiwgZ29kdmlhYm9keWV4cGVyaWVuY2VzICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IHByYXlmcmVxbWluLCB5ID0gZ29kdmlhYm9keWV4cGVyaWVuY2VzLCBjb2xvciA9IHJlc2VhcmNoZXIpKSArCiAgZmFjZXRfZ3JpZCh1cmJhbl9ydXJhbCB+IGNoYXJpc21hdGljX2xvY2FsIH4gY291bnRyeSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjMsIHBvc2l0aW9uID0gcG9zaXRpb25faml0dGVyKDAuMiwgMC4yKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJwcmF5ZnJlcW1pbiIsICJnb2R2aWFib2R5ZXhwZXJpZW5jZXMiLCBzZXAgPSAiIHggIiksCiAgICAgICAjIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInByYXlmcmVxbWluIiwKICAgICAgIHkgPSAiZ29kdmlhYm9keWV4cGVyaWVuY2VzIiwKICAgICAgIGNvbG9yID0gIlJlc2VhcmNoZXIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBndWlkZXMoY29sb3IgPSBndWlkZV9sZWdlbmQobmNvbCA9IDYsIGJ5cm93ID0gVFJVRSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlLmFlcyA9IGxpc3QoYWxwaGEgPSAxKSkpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpkICU+JQogIGZpbHRlcighaXMubmEocHJheWZyZXFtaW4pLCAhaXMubmEoZ29kdmlhYm9keWV4cGVyaWVuY2VzKSwKICAgICAgICAgcHJheWZyZXFtaW4gIT0gIk90aGVyIiwgZ29kdmlhYm9keWV4cGVyaWVuY2VzICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IHByYXlmcmVxbWluLCBhbHBoYSA9IGdvZHZpYWJvZHlleHBlcmllbmNlcywgZmlsbCA9IHJlc2VhcmNoZXIpKSArCiAgZmFjZXRfZ3JpZCh1cmJhbl9ydXJhbCB+IGNoYXJpc21hdGljX2xvY2FsIH4gY291bnRyeSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBwcmF5ZnJlcW1pbl9jb3VudF9ieV9xdWFkLAogICAgICAgICAgICBhZXMoeCA9IHByYXlmcmVxbWluLCB5ID0gMSwgYWxwaGEgPSBOVUxMLCBmaWxsID0gTlVMTCwKICAgICAgICAgICAgICAgIGxhYmVsID0gcGFzdGUwKCIobj0iLCBuLCAiKSIpKSwKICAgICAgICAgICAgc2l6ZSA9IDIsIG51ZGdlX3kgPSAwLjA1KSArCiAgIyBzY2FsZV9maWxsX2JyZXdlcihndWlkZSA9IE5VTEwsIHBhbGV0dGUgPSAiRGFyazIiKSArCiAgc2NhbGVfZmlsbF9tYW51YWwoZ3VpZGUgPSBOVUxMLCB2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUocmFuZ2UgPSBjKDAuNSwgMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJwcmF5ZnJlcW1pbiIsICJnb2R2aWFib2R5ZXhwZXJpZW5jZXMiLCBzZXAgPSAiIHggIiksCiAgICAgICBzdWJ0aXRsZSA9ICJFeGNsdWRpbmcgcGVvcGxlIHdobyBkaWQgbm90IGhhdmUgYSBjbGVhciBhbnN3ZXIiLAogICAgICAgeCA9ICJwcmF5ZnJlcW1pbiIsCiAgICAgICB5ID0gIlByb3BvcnRpb24iLAogICAgICAgYWxwaGEgPSAiZ29kdmlhYm9keWV4cGVyaWVuY2VzIiwKICAgICAgIGZpbGwgPSAiUmVzZWFyY2hlciIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGd1aWRlcyhhbHBoYSA9IGd1aWRlX2xlZ2VuZCgpLAogICAgICAgICBmaWxsID0gIm5vbmUiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC41fQpkICU+JQogIGZpbHRlcighaXMubmEocHJheWZyZXFtaW4pLCAhaXMubmEoZ29kdmlhYm9keWV4cGVyaWVuY2VzKSwKICAgICAgICAgcHJheWZyZXFtaW4gIT0gIk90aGVyIiwgZ29kdmlhYm9keWV4cGVyaWVuY2VzICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IHByYXlmcmVxbWluLCBhbHBoYSA9IGdvZHZpYWJvZHlleHBlcmllbmNlcywgZmlsbCA9IGNvdW50cnkpKSArCiAgZmFjZXRfZ3JpZCguIH4gY291bnRyeSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBwcmF5ZnJlcW1pbl9jb3VudCwKICAgICAgICAgICAgYWVzKHggPSBwcmF5ZnJlcW1pbiwgeSA9IDEsIGFscGhhID0gTlVMTCwgZmlsbCA9IE5VTEwsCiAgICAgICAgICAgICAgICBsYWJlbCA9IHBhc3RlMCgiKG49IiwgbiwgIikiKSksCiAgICAgICAgICAgIHNpemUgPSAyLCBudWRnZV95ID0gMC4wNSkgKwogIHNjYWxlX2ZpbGxfYnJld2VyKGd1aWRlID0gTlVMTCwgcGFsZXR0ZSA9ICJEYXJrMiIpICsKICAjIHNjYWxlX2ZpbGxfbWFudWFsKGd1aWRlID0gTlVMTCwgdmFsdWVzID0gY3VzdG9tX3BhbCkgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKHJhbmdlID0gYygwLjUsIDEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjI1KSkgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgicHJheWZyZXFtaW4iLCAiZ29kdmlhYm9keWV4cGVyaWVuY2VzIiwgc2VwID0gIiB4ICIpLAogICAgICAgc3VidGl0bGUgPSAiRXhjbHVkaW5nIHBlb3BsZSB3aG8gZGlkIG5vdCBoYXZlIGEgY2xlYXIgYW5zd2VyIiwKICAgICAgIHggPSAicHJheWZyZXFtaW4iLAogICAgICAgeSA9ICJQcm9wb3J0aW9uIiwKICAgICAgIGFscGhhID0gImdvZHZpYWJvZHlleHBlcmllbmNlcyIsCiAgICAgICBmaWxsID0gIlJlc2VhcmNoZXIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBndWlkZXMoYWxwaGEgPSBndWlkZV9sZWdlbmQoKSwKICAgICAgICAgZmlsbCA9ICJub25lIikKYGBgCgpgYGB7cn0KZDMgPC0gZCAlPiUKICBmaWx0ZXIoIWlzLm5hKHByYXlmcmVxbWluKSwgIWlzLm5hKGdvZHZpYWJvZHlleHBlcmllbmNlcyksCiAgICAgICAgIHByYXlmcmVxbWluICE9ICJPdGhlciIsIGdvZHZpYWJvZHlleHBlcmllbmNlcyAhPSAiT3RoZXIiKSAlPiUKICBtdXRhdGUocHJheWZyZXFtaW5fbnVtID0gYXMubnVtZXJpYyhwcmF5ZnJlcW1pbikgLSAxLAogICAgICAgICBnb2R2aWFib2R5ZXhwZXJpZW5jZXMgPSBmYWN0b3IoZ29kdmlhYm9keWV4cGVyaWVuY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiTm8iLCAiWWVzIikpLAogICAgICAgICBnb2R2aWFib2R5ZXhwZXJpZW5jZXNfbnVtID0gYXMubnVtZXJpYyhnb2R2aWFib2R5ZXhwZXJpZW5jZXMpIC0gMSkgJT4lCiAgc2VsZWN0KGNvdW50cnksIHJlc2VhcmNoZXIsIHVyYmFuX3J1cmFsLCBjaGFyaXNtYXRpY19sb2NhbCwgc3ViamVjdF9uYW1lLAogICAgICAgICBzdGFydHNfd2l0aCgicHJheWZyZXFtaW4iKSwgc3RhcnRzX3dpdGgoImdvZHZpYWJvZHlleHBlcmllbmNlcyIpKQoKY29udHJhc3RzKGQzJGNvdW50cnkpIDwtIGNiaW5kKCJHSCIgPSBjKC0xLCAxLCAwLCAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUSCIgPSBjKC0xLCAwLCAxLCAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDSCIgPSBjKC0xLCAwLCAwLCAxLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWVCIgPSBjKC0xLCAwLCAwLCAwLCAxKSkKY29udHJhc3RzKGQzJHByYXlmcmVxbWluKSA8LSBjb250ci5wb2x5KDQpCgpyMyA8LSBnbG0oZ29kdmlhYm9keWV4cGVyaWVuY2VzX251bSB+IHByYXlmcmVxbWluICsgY291bnRyeSwKICAgICAgICAgICAgICAgICAgZmFtaWx5ID0gImJpbm9taWFsIiwgZGF0YSA9IGQzKQpzdW1tYXJ5KHIzKQpgYGAKCiMjIyBBZ2dyZWdhdGUgc3Bpcml0dWFsIGV4cGVyaWVuY2VzIHNjb3JlCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CmRfc3Bpcml0ICU+JQogIGZpbHRlcighaXMubmEocHJheWZyZXFtaW4pLCAhaXMubmEoc3BleF9zY29yZSkpICU+JQogIGRpc3RpbmN0KGNvdW50cnksIHJlc2VhcmNoZXIsIHVyYmFuX3J1cmFsLCBjaGFyaXNtYXRpY19sb2NhbCwKICAgICAgICAgICBzdWJqZWN0X25hbWUsIHByYXlmcmVxbWluLCBzcGV4X3Njb3JlKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBwcmF5ZnJlcW1pbiwgeSA9IHNwZXhfc2NvcmUsIGNvbG9yID0gcmVzZWFyY2hlcikpICsKICBmYWNldF9ncmlkKHVyYmFuX3J1cmFsIH4gY2hhcmlzbWF0aWNfbG9jYWwgfiBjb3VudHJ5KSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuMywgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXIoMC4yLCAwKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJwcmF5ZnJlcW1pbiIsICJzcGV4X3Njb3JlIiwgc2VwID0gIiB4ICIpLAogICAgICAgIyBzdWJ0aXRsZSA9ICJFeGNsdWRpbmcgcGVvcGxlIHdobyBkaWQgbm90IGhhdmUgYSBjbGVhciBhbnN3ZXIiLAogICAgICAgeCA9ICJwcmF5ZnJlcW1pbiIsCiAgICAgICB5ID0gInNwZXhfc2NvcmUiLAogICAgICAgY29sb3IgPSAiUmVzZWFyY2hlciIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGd1aWRlcyhjb2xvciA9IGd1aWRlX2xlZ2VuZChuY29sID0gNiwgYnlyb3cgPSBUUlVFLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUuYWVzID0gbGlzdChhbHBoYSA9IDEpKSkKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDAuNn0KZF9zcGlyaXQgJT4lCiAgZmlsdGVyKCFpcy5uYShwcmF5ZnJlcW1pbiksICFpcy5uYShzcGV4X3Njb3JlKSkgJT4lCiAgZGlzdGluY3QoY291bnRyeSwgcmVzZWFyY2hlciwgdXJiYW5fcnVyYWwsIGNoYXJpc21hdGljX2xvY2FsLAogICAgICAgICAgIHN1YmplY3RfbmFtZSwgcHJheWZyZXFtaW4sIHNwZXhfc2NvcmUpICU+JQogIGdncGxvdChhZXMoeCA9IHByYXlmcmVxbWluLCB5ID0gc3BleF9zY29yZSwgCiAgICAgICAgICAgICBjb2xvciA9IGNvdW50cnksIGZpbGwgPSBjb3VudHJ5LCBncm91cCA9IGNvdW50cnkpKSArCiAgZmFjZXRfZ3JpZCguIH4gY291bnRyeSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjMsIHBvc2l0aW9uID0gcG9zaXRpb25faml0dGVyKDAuMiwgMCkpICsKICBnZW9tX3Ntb290aChhZXMoeCA9IGFzLm51bWVyaWMocHJheWZyZXFtaW4pKSwgbWV0aG9kID0gImxtIikgKwogICMgZ2VvbV9zbW9vdGgoYWVzKHggPSBhcy5udW1lcmljKHByYXlmcmVxbWluKSksIG1ldGhvZCA9ICJsb2VzcyIpICsKICAjIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgIyBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIpICsKICBsYWJzKHRpdGxlID0gcGFzdGUoInByYXlmcmVxbWluIiwgInNwZXhfc2NvcmUiLCBzZXAgPSAiIHggIiksCiAgICAgICAjIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInByYXlmcmVxbWluIiwKICAgICAgIHkgPSAic3BleF9zY29yZSIsCiAgICAgICBjb2xvciA9ICJSZXNlYXJjaGVyIiwgZmlsbCA9ICJSZXNlYXJjaGVyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKG5jb2wgPSA2LCBieXJvdyA9IFRSVUUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZS5hZXMgPSBsaXN0KGFscGhhID0gMSkpLAogICAgICAgICBmaWxsID0gZ3VpZGVfbGVnZW5kKG5jb2wgPSA2LCBieXJvdyA9IFRSVUUpKQpgYGAKCmBgYHtyfQpkX2FnZzEgPC0gZF9zcGlyaXQgJT4lCiAgZmlsdGVyKCFpcy5uYShwcmF5ZnJlcW1pbiksICFpcy5uYShzcGV4X3Njb3JlKSwKICAgICAgICAgcHJheWZyZXFtaW4gIT0gIk90aGVyIiwgc3BleF9zY29yZSAhPSAiT3RoZXIiKSAlPiUKICAjIGRpc3RpbmN0KGNvdW50cnksIHJlc2VhcmNoZXIsIHVyYmFuX3J1cmFsLCBjaGFyaXNtYXRpY19sb2NhbCwKICAjICAgICAgICAgIHN1YmplY3RfbmFtZSwgcHJheWZyZXFtaW4sIHNwZXhfc2NvcmUpICU+JQogIG11dGF0ZShwcmF5ZnJlcW1pbl9udW0gPSBhcy5udW1lcmljKHByYXlmcmVxbWluKSAtIDEpICMgJT4lCiAgIyBzZWxlY3QoY291bnRyeSwgcmVzZWFyY2hlciwgdXJiYW5fcnVyYWwsIGNoYXJpc21hdGljX2xvY2FsLCBzdWJqZWN0X25hbWUsCiAgIyAgICAgICAgc3RhcnRzX3dpdGgoInByYXlmcmVxbWluIiksIHN0YXJ0c193aXRoKCJzcGV4X3Njb3JlIikpCgpjb250cmFzdHMoZF9hZ2cxJGNvdW50cnkpIDwtIGNiaW5kKCJHSCIgPSBjKC0xLCAxLCAwLCAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUSCIgPSBjKC0xLCAwLCAxLCAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDSCIgPSBjKC0xLCAwLCAwLCAxLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWVCIgPSBjKC0xLCAwLCAwLCAwLCAxKSkKY29udHJhc3RzKGRfYWdnMSRwcmF5ZnJlcW1pbikgPC0gY29udHIucG9seSg0KQoKcl9hZ2cxIDwtIGxtZXIocmVzcG9uc2UgfiBwcmF5ZnJlcW1pbiArIGNvdW50cnkgCiAgICAgICAgICAgICAgICsgKDEgfCBzdWJqZWN0X25hbWUpICsgKDEgfCBxdWVzdGlvbiksIAogICAgICAgICAgICAgICBkYXRhID0gZF9hZ2cxKQpzdW1tYXJ5KHJfYWdnMSkKCnJfYWdnMiA8LSBsbWVyKHJlc3BvbnNlIH4gcHJheWZyZXFtaW4gKiBjb3VudHJ5IAogICAgICAgICAgICAgICArICgxIHwgc3ViamVjdF9uYW1lKSArICgxIHwgcXVlc3Rpb24pLCAKICAgICAgICAgICAgICAgZGF0YSA9IGRfYWdnMSkKc3VtbWFyeShyX2FnZzIpCgphbm92YShyX2FnZzEsIHJfYWdnMikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDAuNn0KZF9yX2FnZzFfcHJlZGljdGVkIDwtIGRfYWdnMSAlPiUKICBtdXRhdGUocmVzcG9uc2VfcHJlZCA9IHByZWRpY3Qocl9hZ2cxLCBkX2FnZzEpKSAlPiUKICBncm91cF9ieShzdWJqZWN0X25hbWUpICU+JQogIG11dGF0ZShzcGV4X3Njb3JlX3ByZWQgPSBzdW0ocmVzcG9uc2VfcHJlZCwgbmEucm0gPSBUKSkgJT4lCiAgdW5ncm91cCgpICU+JQogIGdyb3VwX2J5KGNvdW50cnksIHByYXlmcmVxbWluKSAlPiUKICBkbyhkYXRhLmZyYW1lKHJiaW5kKHNtZWFuLmNsLmJvb3QoLiRzcGV4X3Njb3JlX3ByZWQpKSkpCgpkX3NwaXJpdCAlPiUKICBmaWx0ZXIoIWlzLm5hKHByYXlmcmVxbWluKSwgIWlzLm5hKHNwZXhfc2NvcmUpKSAlPiUKICBkaXN0aW5jdChjb3VudHJ5LCByZXNlYXJjaGVyLCB1cmJhbl9ydXJhbCwgY2hhcmlzbWF0aWNfbG9jYWwsCiAgICAgICAgICAgc3ViamVjdF9uYW1lLCBwcmF5ZnJlcW1pbiwgc3BleF9zY29yZSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gcHJheWZyZXFtaW4sIHkgPSBzcGV4X3Njb3JlLCAKICAgICAgICAgICAgIGNvbG9yID0gY291bnRyeSwgZmlsbCA9IGNvdW50cnksIGdyb3VwID0gY291bnRyeSkpICsKICBmYWNldF9ncmlkKC4gfiBjb3VudHJ5KSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuMywgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXIoMC4yLCAwKSkgKwogIGdlb21fbGluZShkYXRhID0gZF9yX2FnZzFfcHJlZGljdGVkLCBhZXMoeSA9IE1lYW4pKSArCiAgZ2VvbV9yaWJib24oZGF0YSA9IGRfcl9hZ2cxX3ByZWRpY3RlZCwgCiAgICAgICAgICAgICAgYWVzKHltaW4gPSBMb3dlciwgeW1heCA9IFVwcGVyLCB5ID0gTlVMTCksIAogICAgICAgICAgICAgIGFscGhhID0gMC41LCBzaXplID0gMCkgKwogICMgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGN1c3RvbV9wYWwpICsKICAjIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGN1c3RvbV9wYWwpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIikgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgicHJheWZyZXFtaW4iLCAic3BleF9zY29yZSIsIHNlcCA9ICIgeCAiKSwKICAgICAgIHN1YnRpdGxlID0gIkxpbmVzIGFyZSBwcmVkaWN0aW9ucyBmcm9tIGEgbWl4ZWQgZWZmZWN0cyBsaW5lYXIgcmVncmVzc2lvbjpcbmxtZXIocmVzcG9uc2UgfiBwcmF5ZnJlcW1pbiArIGNvdW50cnkgKyAoMSB8IHN1YmplY3RfbmFtZSkgKyAoMSB8IHF1ZXN0aW9uKSIsCiAgICAgICB4ID0gInByYXlmcmVxbWluIiwKICAgICAgIHkgPSAic3BleF9zY29yZSIsCiAgICAgICBjb2xvciA9ICJTaXRlIiwgZmlsbCA9ICJTaXRlIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGNvbG9yID0gIm5vbmUiLAogICAgICAgICBmaWxsID0gIm5vbmUiKQpgYGAKCiMjIyBMb29raW5nIGp1c3QgYXQgJ2FwcGxlcycgKHVyYmFuIGNoYXJpc21hdGljcykKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMC41fQpkX3NwaXJpdCAlPiUKICBmaWx0ZXIoIWlzLm5hKHByYXlmcmVxbWluKSwgIWlzLm5hKHNwZXhfc2NvcmUpLAogICAgICAgICBxdWFkID09ICJ1cmJhbiBjaGFyaXNtYXRpYyIpICU+JQogIGRpc3RpbmN0KGNvdW50cnksIHJlc2VhcmNoZXIsIGNoYXJpc21hdGljX2xvY2FsLCB1cmJhbl9ydXJhbCwgCiAgICAgICAgICAgc3ViamVjdF9uYW1lLCBwcmF5ZnJlcW1pbiwgc3BleF9zY29yZSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gcHJheWZyZXFtaW4sIHkgPSBzcGV4X3Njb3JlLCAKICAgICAgICAgICAgIGNvbG9yID0gY291bnRyeSwgZmlsbCA9IGNvdW50cnksIGdyb3VwID0gY291bnRyeSkpICsKICBmYWNldF9ncmlkKGNoYXJpc21hdGljX2xvY2FsIH4gdXJiYW5fcnVyYWwgfiBjb3VudHJ5KSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuMywgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXIoMC4yLCAwKSkgKwogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIpICsKICAjIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgIyBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIpICsKICBsYWJzKHRpdGxlID0gcGFzdGUoInByYXlmcmVxbWluIiwgInNwZXhfc2NvcmUiLCBzZXAgPSAiIHggIiksCiAgICAgICAjIHN1YnRpdGxlID0gIkxpbmVzIGFyZSBwcmVkaWN0aW9ucyBmcm9tIGEgbWl4ZWQgZWZmZWN0cyBsaW5lYXIgcmVncmVzc2lvbjpcbmxtZXIocmVzcG9uc2UgfiBwcmF5ZnJlcW1pbiArIGNvdW50cnkgKyAoMSB8IHN1YmplY3RfbmFtZSkgKyAoMSB8IHF1ZXN0aW9uKSIsCiAgICAgICB4ID0gInByYXlmcmVxbWluIiwKICAgICAgIHkgPSAic3BleF9zY29yZSIsCiAgICAgICBjb2xvciA9ICJTaXRlIiwgZmlsbCA9ICJTaXRlIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGNvbG9yID0gIm5vbmUiLAogICAgICAgICBmaWxsID0gIm5vbmUiKQpgYGAKCiMjIyBMb29raW5nIGF0IGFsbCBjaGFyaXNtYXRpY3MKCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMC41fQpkX3NwaXJpdCAlPiUKICBmaWx0ZXIoIWlzLm5hKHByYXlmcmVxbWluKSwgIWlzLm5hKHNwZXhfc2NvcmUpLAogICAgICAgICBjaGFyaXNtYXRpY19sb2NhbCA9PSAiY2hhcmlzbWF0aWMiKSAlPiUKICBkaXN0aW5jdChjb3VudHJ5LCByZXNlYXJjaGVyLCBjaGFyaXNtYXRpY19sb2NhbCwgdXJiYW5fcnVyYWwsIAogICAgICAgICAgIHN1YmplY3RfbmFtZSwgcHJheWZyZXFtaW4sIHNwZXhfc2NvcmUpICU+JQogIGdncGxvdChhZXMoeCA9IHByYXlmcmVxbWluLCB5ID0gc3BleF9zY29yZSwgCiAgICAgICAgICAgICBjb2xvciA9IGNvdW50cnksIGZpbGwgPSBjb3VudHJ5LCBncm91cCA9IGNvdW50cnkpKSArCiAgZmFjZXRfZ3JpZChjaGFyaXNtYXRpY19sb2NhbCB+IGNvdW50cnkpICsKICBnZW9tX3BvaW50KGFscGhhID0gMC4zLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2ppdHRlcigwLjIsIDApKSArCiAgZ2VvbV9zbW9vdGgobWV0aG9kID0gImxtIikgKwogICMgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGN1c3RvbV9wYWwpICsKICAjIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGN1c3RvbV9wYWwpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIikgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgicHJheWZyZXFtaW4iLCAic3BleF9zY29yZSIsIHNlcCA9ICIgeCAiKSwKICAgICAgICMgc3VidGl0bGUgPSAiTGluZXMgYXJlIHByZWRpY3Rpb25zIGZyb20gYSBtaXhlZCBlZmZlY3RzIGxpbmVhciByZWdyZXNzaW9uOlxubG1lcihyZXNwb25zZSB+IHByYXlmcmVxbWluICsgY291bnRyeSArICgxIHwgc3ViamVjdF9uYW1lKSArICgxIHwgcXVlc3Rpb24pIiwKICAgICAgIHggPSAicHJheWZyZXFtaW4iLAogICAgICAgeSA9ICJzcGV4X3Njb3JlIiwKICAgICAgIGNvbG9yID0gIlNpdGUiLCBmaWxsID0gIlNpdGUiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBndWlkZXMoY29sb3IgPSAibm9uZSIsCiAgICAgICAgIGZpbGwgPSAibm9uZSIpCmBgYAoKCiMgRG91YnQgJiBleHRlcm5hbCBzZW5zb3J5IGV4cGVyaWVuY2VzCipSZXF1ZXN0ZWQgYnkgRW1pbHksIEpvaG4qCgojIyAiRG91YnQiIGluZHhlZCBieSBgc2VsZnVuc3VyZWdvZHJlYWxgCgpfSGFzIHRoZXJlIGJlZW4gYSB0aW1lIHdoZW4geW91IHlvdXJzZWxmIHdvbmRlcmVkIHdoZXRoZXIgR29kKiB3YXMgcmVhbD9fCgpgYGB7cn0Kc2VsZnVuc3VyZWdvZHJlYWxfY291bnQgPC0gZCAlPiUKICBmaWx0ZXIoIWlzLm5hKHNlbGZ1bnN1cmVnb2RyZWFsKSwgIWlzLm5hKGdvZHZveGFsb3VkKSwKICAgICAgICAgc2VsZnVuc3VyZWdvZHJlYWwgIT0gIk90aGVyIiwgZ29kdm94YWxvdWQgIT0gIk90aGVyIikgJT4lCiAgY291bnQoY291bnRyeSwgc2VsZnVuc3VyZWdvZHJlYWwpICU+JQogIGRhdGEuZnJhbWUoKQoKc2VsZnVuc3VyZWdvZHJlYWxfY291bnRfYnlfcXVhZCA8LSBkICU+JQogIGZpbHRlcighaXMubmEoc2VsZnVuc3VyZWdvZHJlYWwpLCAhaXMubmEoZ29kdm94YWxvdWQpLAogICAgICAgICBzZWxmdW5zdXJlZ29kcmVhbCAhPSAiT3RoZXIiLCBnb2R2b3hhbG91ZCAhPSAiT3RoZXIiKSAlPiUKICBjb3VudChjb3VudHJ5LCB1cmJhbl9ydXJhbCwgY2hhcmlzbWF0aWNfbG9jYWwsIHNlbGZ1bnN1cmVnb2RyZWFsKSAlPiUKICBkYXRhLmZyYW1lKCkKYGBgCgojIyMgU3Bpcml0dWFsIGV4cGVyaWVuY2VzIGluZGV4ZWQgYnkgYGdvZHZveGFsb3VkYApfU29tZSBwZW9wbGUgc2F5IHRoYXQgdGhleSBoYXZlIGhlYXJkIEdvZCogc3BlYWsgb3V0IGxvdWQgdG8gdGhlbS4gSGFzIHRoaXMgZXZlciBoYXBwZW5lZCB0byB5b3U/XwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpkICU+JQogIGZpbHRlcighaXMubmEoc2VsZnVuc3VyZWdvZHJlYWwpLCAhaXMubmEoZ29kdm94YWxvdWQpKSAlPiUgIywKICAgICAgICAgIyBzZWxmdW5zdXJlZ29kcmVhbCAhPSAiT3RoZXIiLCBnb2R2b3hhbG91ZCAhPSAiT3RoZXIiKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBzZWxmdW5zdXJlZ29kcmVhbCwgeSA9IGdvZHZveGFsb3VkLCBjb2xvciA9IHJlc2VhcmNoZXIpKSArCiAgZmFjZXRfZ3JpZCh1cmJhbl9ydXJhbCB+IGNoYXJpc21hdGljX2xvY2FsIH4gY291bnRyeSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjMsIHBvc2l0aW9uID0gcG9zaXRpb25faml0dGVyKDAuMiwgMC4yKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJzZWxmdW5zdXJlZ29kcmVhbCIsICJnb2R2b3hhbG91ZCIsIHNlcCA9ICIgeCAiKSwKICAgICAgICMgc3VidGl0bGUgPSAiRXhjbHVkaW5nIHBlb3BsZSB3aG8gZGlkIG5vdCBoYXZlIGEgY2xlYXIgYW5zd2VyIiwKICAgICAgIHggPSAic2VsZnVuc3VyZWdvZHJlYWwiLAogICAgICAgeSA9ICJnb2R2b3hhbG91ZCIsCiAgICAgICBjb2xvciA9ICJSZXNlYXJjaGVyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKG5jb2wgPSA2LCBieXJvdyA9IFRSVUUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZS5hZXMgPSBsaXN0KGFscGhhID0gMSkpKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KZCAlPiUKICBmaWx0ZXIoIWlzLm5hKHNlbGZ1bnN1cmVnb2RyZWFsKSwgIWlzLm5hKGdvZHZveGFsb3VkKSwKICAgICAgICAgc2VsZnVuc3VyZWdvZHJlYWwgIT0gIk90aGVyIiwgZ29kdm94YWxvdWQgIT0gIk90aGVyIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc2VsZnVuc3VyZWdvZHJlYWwsIGFscGhhID0gZ29kdm94YWxvdWQsIGZpbGwgPSByZXNlYXJjaGVyKSkgKwogIGZhY2V0X2dyaWQodXJiYW5fcnVyYWwgfiBjaGFyaXNtYXRpY19sb2NhbCB+IGNvdW50cnkpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKwogIGdlb21fdGV4dChkYXRhID0gc2VsZnVuc3VyZWdvZHJlYWxfY291bnRfYnlfcXVhZCwKICAgICAgICAgICAgYWVzKHggPSBzZWxmdW5zdXJlZ29kcmVhbCwgeSA9IDEsIGFscGhhID0gTlVMTCwgZmlsbCA9IE5VTEwsCiAgICAgICAgICAgICAgICBsYWJlbCA9IHBhc3RlMCgiKG49IiwgbiwgIikiKSksCiAgICAgICAgICAgIHNpemUgPSAyLCBudWRnZV95ID0gMC4wNSkgKwogICMgc2NhbGVfZmlsbF9icmV3ZXIoZ3VpZGUgPSBOVUxMLCBwYWxldHRlID0gIkRhcmsyIikgKwogIHNjYWxlX2ZpbGxfbWFudWFsKGd1aWRlID0gTlVMTCwgdmFsdWVzID0gY3VzdG9tX3BhbCkgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKHJhbmdlID0gYygwLjUsIDEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjI1KSkgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgic2VsZnVuc3VyZWdvZHJlYWwiLCAiZ29kdm94YWxvdWQiLCBzZXAgPSAiIHggIiksCiAgICAgICBzdWJ0aXRsZSA9ICJFeGNsdWRpbmcgcGVvcGxlIHdobyBkaWQgbm90IGhhdmUgYSBjbGVhciBhbnN3ZXIiLAogICAgICAgeCA9ICJzZWxmdW5zdXJlZ29kcmVhbCIsCiAgICAgICB5ID0gIlByb3BvcnRpb24iLAogICAgICAgYWxwaGEgPSAiZ29kdm94YWxvdWQiLAogICAgICAgZmlsbCA9ICJSZXNlYXJjaGVyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGFscGhhID0gZ3VpZGVfbGVnZW5kKCksCiAgICAgICAgIGZpbGwgPSAibm9uZSIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjV9CmQgJT4lCiAgZmlsdGVyKCFpcy5uYShzZWxmdW5zdXJlZ29kcmVhbCksICFpcy5uYShnb2R2b3hhbG91ZCksCiAgICAgICAgIHNlbGZ1bnN1cmVnb2RyZWFsICE9ICJPdGhlciIsIGdvZHZveGFsb3VkICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IHNlbGZ1bnN1cmVnb2RyZWFsLCBhbHBoYSA9IGdvZHZveGFsb3VkLCBmaWxsID0gY291bnRyeSkpICsKICBmYWNldF9ncmlkKC4gfiBjb3VudHJ5KSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsKICBnZW9tX3RleHQoZGF0YSA9IHNlbGZ1bnN1cmVnb2RyZWFsX2NvdW50LAogICAgICAgICAgICBhZXMoeCA9IHNlbGZ1bnN1cmVnb2RyZWFsLCB5ID0gMSwgYWxwaGEgPSBOVUxMLCBmaWxsID0gTlVMTCwKICAgICAgICAgICAgICAgIGxhYmVsID0gcGFzdGUwKCIobj0iLCBuLCAiKSIpKSwKICAgICAgICAgICAgc2l6ZSA9IDIsIG51ZGdlX3kgPSAwLjA1KSArCiAgc2NhbGVfZmlsbF9icmV3ZXIoZ3VpZGUgPSBOVUxMLCBwYWxldHRlID0gIkRhcmsyIikgKwogICMgc2NhbGVfZmlsbF9tYW51YWwoZ3VpZGUgPSBOVUxMLCB2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUocmFuZ2UgPSBjKDAuNSwgMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJzZWxmdW5zdXJlZ29kcmVhbCIsICJnb2R2b3hhbG91ZCIsIHNlcCA9ICIgeCAiKSwKICAgICAgIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInNlbGZ1bnN1cmVnb2RyZWFsIiwKICAgICAgIHkgPSAiUHJvcG9ydGlvbiIsCiAgICAgICBhbHBoYSA9ICJnb2R2b3hhbG91ZCIsCiAgICAgICBmaWxsID0gIlJlc2VhcmNoZXIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBndWlkZXMoYWxwaGEgPSBndWlkZV9sZWdlbmQoKSwKICAgICAgICAgZmlsbCA9ICJub25lIikKYGBgCgpgYGB7cn0KZDQgPC0gZCAlPiUKICBmaWx0ZXIoIWlzLm5hKHNlbGZ1bnN1cmVnb2RyZWFsKSwgIWlzLm5hKGdvZHZveGFsb3VkKSwKICAgICAgICAgc2VsZnVuc3VyZWdvZHJlYWwgIT0gIk90aGVyIiwgZ29kdm94YWxvdWQgIT0gIk90aGVyIiwKICAgICAgICAgc2VsZnVuc3VyZWdvZHJlYWwgIT0gIk1heWJlIikgJT4lCiAgbXV0YXRlKHNlbGZ1bnN1cmVnb2RyZWFsID0gZmFjdG9yKHNlbGZ1bnN1cmVnb2RyZWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJObyIsICJZZXMiKSksCiAgICAgICAgIHNlbGZ1bnN1cmVnb2RyZWFsX251bSA9IGFzLm51bWVyaWMoc2VsZnVuc3VyZWdvZHJlYWwpIC0gMSwKICAgICAgICAgZ29kdm94YWxvdWQgPSBmYWN0b3IoZ29kdm94YWxvdWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJObyIsICJZZXMiKSksCiAgICAgICAgIGdvZHZveGFsb3VkX251bSA9IGFzLm51bWVyaWMoZ29kdm94YWxvdWQpIC0gMSkgJT4lCiAgc2VsZWN0KGNvdW50cnksIHJlc2VhcmNoZXIsIHVyYmFuX3J1cmFsLCBjaGFyaXNtYXRpY19sb2NhbCwgc3ViamVjdF9uYW1lLAogICAgICAgICBzdGFydHNfd2l0aCgic2VsZnVuc3VyZWdvZHJlYWwiKSwgc3RhcnRzX3dpdGgoImdvZHZveGFsb3VkIikpCgpjb250cmFzdHMoZDQkY291bnRyeSkgPC0gY2JpbmQoIkdIIiA9IGMoLTEsIDEsIDAsIDAsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRIIiA9IGMoLTEsIDAsIDEsIDAsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNIIiA9IGMoLTEsIDAsIDAsIDEsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZUIiA9IGMoLTEsIDAsIDAsIDAsIDEpKQpjb250cmFzdHMoZDQkc2VsZnVuc3VyZWdvZHJlYWwpIDwtIGNiaW5kKCJZIiA9IGMoLTEsIDEpKQoKcjQgPC0gZ2xtKGdvZHZveGFsb3VkX251bSB+IHNlbGZ1bnN1cmVnb2RyZWFsICsgY291bnRyeSwKICAgICAgICAgICAgICAgICAgZmFtaWx5ID0gImJpbm9taWFsIiwgZGF0YSA9IGQ0KQpzdW1tYXJ5KHI0KQpgYGAKCiMjIyBTcGlyaXR1YWwgZXhwZXJpZW5jZXMgaW5kZXhlZCBieSBgZ29kdmlhdmlzaW9uc2AKX1NvbWUgcGVvcGxlIHNheSB0aGF0IHRoZXkgaGF2ZSBoYWQgYSB2aXNpb24gZnJvbSBHb2Qq4oCUdGhleSBoYXZlIGEgcGljdHVyZSwgYnV0IGl0IGlzIGxpa2UgdGhleSBzZWUgaXQgd2l0aCB0aGVpciBleWVzLiBIYXMgYW55dGhpbmcgbGlrZSB0aGF0IGhhcHBlbmVkIHRvIHlvdT9fCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CmQgJT4lCiAgZmlsdGVyKCFpcy5uYShzZWxmdW5zdXJlZ29kcmVhbCksICFpcy5uYShnb2R2aWF2aXNpb25zKSkgJT4lICMsCiAgICAgICAgICMgc2VsZnVuc3VyZWdvZHJlYWwgIT0gIk90aGVyIiwgZ29kdmlhdmlzaW9ucyAhPSAiT3RoZXIiKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBzZWxmdW5zdXJlZ29kcmVhbCwgeSA9IGdvZHZpYXZpc2lvbnMsIGNvbG9yID0gcmVzZWFyY2hlcikpICsKICBmYWNldF9ncmlkKHVyYmFuX3J1cmFsIH4gY2hhcmlzbWF0aWNfbG9jYWwgfiBjb3VudHJ5KSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuMywgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXIoMC4yLCAwLjIpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGN1c3RvbV9wYWwpICsKICBsYWJzKHRpdGxlID0gcGFzdGUoInNlbGZ1bnN1cmVnb2RyZWFsIiwgImdvZHZpYXZpc2lvbnMiLCBzZXAgPSAiIHggIiksCiAgICAgICAjIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInNlbGZ1bnN1cmVnb2RyZWFsIiwKICAgICAgIHkgPSAiZ29kdmlhdmlzaW9ucyIsCiAgICAgICBjb2xvciA9ICJSZXNlYXJjaGVyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKG5jb2wgPSA2LCBieXJvdyA9IFRSVUUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZS5hZXMgPSBsaXN0KGFscGhhID0gMSkpKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KZCAlPiUKICBmaWx0ZXIoIWlzLm5hKHNlbGZ1bnN1cmVnb2RyZWFsKSwgIWlzLm5hKGdvZHZpYXZpc2lvbnMpLAogICAgICAgICBzZWxmdW5zdXJlZ29kcmVhbCAhPSAiT3RoZXIiLCBnb2R2aWF2aXNpb25zICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IHNlbGZ1bnN1cmVnb2RyZWFsLCBhbHBoYSA9IGdvZHZpYXZpc2lvbnMsIGZpbGwgPSByZXNlYXJjaGVyKSkgKwogIGZhY2V0X2dyaWQodXJiYW5fcnVyYWwgfiBjaGFyaXNtYXRpY19sb2NhbCB+IGNvdW50cnkpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKwogIGdlb21fdGV4dChkYXRhID0gc2VsZnVuc3VyZWdvZHJlYWxfY291bnRfYnlfcXVhZCwKICAgICAgICAgICAgYWVzKHggPSBzZWxmdW5zdXJlZ29kcmVhbCwgeSA9IDEsIGFscGhhID0gTlVMTCwgZmlsbCA9IE5VTEwsCiAgICAgICAgICAgICAgICBsYWJlbCA9IHBhc3RlMCgiKG49IiwgbiwgIikiKSksCiAgICAgICAgICAgIHNpemUgPSAyLCBudWRnZV95ID0gMC4wNSkgKwogICMgc2NhbGVfZmlsbF9icmV3ZXIoZ3VpZGUgPSBOVUxMLCBwYWxldHRlID0gIkRhcmsyIikgKwogIHNjYWxlX2ZpbGxfbWFudWFsKGd1aWRlID0gTlVMTCwgdmFsdWVzID0gY3VzdG9tX3BhbCkgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKHJhbmdlID0gYygwLjUsIDEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjI1KSkgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgic2VsZnVuc3VyZWdvZHJlYWwiLCAiZ29kdmlhdmlzaW9ucyIsIHNlcCA9ICIgeCAiKSwKICAgICAgIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInNlbGZ1bnN1cmVnb2RyZWFsIiwKICAgICAgIHkgPSAiUHJvcG9ydGlvbiIsCiAgICAgICBhbHBoYSA9ICJnb2R2aWF2aXNpb25zIiwKICAgICAgIGZpbGwgPSAiUmVzZWFyY2hlciIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGd1aWRlcyhhbHBoYSA9IGd1aWRlX2xlZ2VuZCgpLAogICAgICAgICBmaWxsID0gIm5vbmUiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC41fQpkICU+JQogIGZpbHRlcighaXMubmEoc2VsZnVuc3VyZWdvZHJlYWwpLCAhaXMubmEoZ29kdmlhdmlzaW9ucyksCiAgICAgICAgIHNlbGZ1bnN1cmVnb2RyZWFsICE9ICJPdGhlciIsIGdvZHZpYXZpc2lvbnMgIT0gIk90aGVyIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc2VsZnVuc3VyZWdvZHJlYWwsIGFscGhhID0gZ29kdmlhdmlzaW9ucywgZmlsbCA9IGNvdW50cnkpKSArCiAgZmFjZXRfZ3JpZCguIH4gY291bnRyeSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBzZWxmdW5zdXJlZ29kcmVhbF9jb3VudCwKICAgICAgICAgICAgYWVzKHggPSBzZWxmdW5zdXJlZ29kcmVhbCwgeSA9IDEsIGFscGhhID0gTlVMTCwgZmlsbCA9IE5VTEwsCiAgICAgICAgICAgICAgICBsYWJlbCA9IHBhc3RlMCgiKG49IiwgbiwgIikiKSksCiAgICAgICAgICAgIHNpemUgPSAyLCBudWRnZV95ID0gMC4wNSkgKwogIHNjYWxlX2ZpbGxfYnJld2VyKGd1aWRlID0gTlVMTCwgcGFsZXR0ZSA9ICJEYXJrMiIpICsKICAjIHNjYWxlX2ZpbGxfbWFudWFsKGd1aWRlID0gTlVMTCwgdmFsdWVzID0gY3VzdG9tX3BhbCkgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKHJhbmdlID0gYygwLjUsIDEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjI1KSkgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgic2VsZnVuc3VyZWdvZHJlYWwiLCAiZ29kdmlhdmlzaW9ucyIsIHNlcCA9ICIgeCAiKSwKICAgICAgIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInNlbGZ1bnN1cmVnb2RyZWFsIiwKICAgICAgIHkgPSAiUHJvcG9ydGlvbiIsCiAgICAgICBhbHBoYSA9ICJnb2R2aWF2aXNpb25zIiwKICAgICAgIGZpbGwgPSAiUmVzZWFyY2hlciIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGd1aWRlcyhhbHBoYSA9IGd1aWRlX2xlZ2VuZCgpLAogICAgICAgICBmaWxsID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpkNSA8LSBkICU+JQogIGZpbHRlcighaXMubmEoc2VsZnVuc3VyZWdvZHJlYWwpLCAhaXMubmEoZ29kdmlhdmlzaW9ucyksCiAgICAgICAgIHNlbGZ1bnN1cmVnb2RyZWFsICE9ICJPdGhlciIsIGdvZHZpYXZpc2lvbnMgIT0gIk90aGVyIiwKICAgICAgICAgc2VsZnVuc3VyZWdvZHJlYWwgIT0gIk1heWJlIikgJT4lCiAgbXV0YXRlKHNlbGZ1bnN1cmVnb2RyZWFsID0gZmFjdG9yKHNlbGZ1bnN1cmVnb2RyZWFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJObyIsICJZZXMiKSksCiAgICAgICAgIHNlbGZ1bnN1cmVnb2RyZWFsX251bSA9IGFzLm51bWVyaWMoc2VsZnVuc3VyZWdvZHJlYWwpIC0gMSwKICAgICAgICAgZ29kdmlhdmlzaW9ucyA9IGZhY3Rvcihnb2R2aWF2aXNpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiTm8iLCAiWWVzIikpLAogICAgICAgICBnb2R2aWF2aXNpb25zX251bSA9IGFzLm51bWVyaWMoZ29kdmlhdmlzaW9ucykgLSAxKSAlPiUKICBzZWxlY3QoY291bnRyeSwgcmVzZWFyY2hlciwgdXJiYW5fcnVyYWwsIGNoYXJpc21hdGljX2xvY2FsLCBzdWJqZWN0X25hbWUsCiAgICAgICAgIHN0YXJ0c193aXRoKCJzZWxmdW5zdXJlZ29kcmVhbCIpLCBzdGFydHNfd2l0aCgiZ29kdmlhdmlzaW9ucyIpKQoKY29udHJhc3RzKGQ1JGNvdW50cnkpIDwtIGNiaW5kKCJHSCIgPSBjKC0xLCAxLCAwLCAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUSCIgPSBjKC0xLCAwLCAxLCAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDSCIgPSBjKC0xLCAwLCAwLCAxLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWVCIgPSBjKC0xLCAwLCAwLCAwLCAxKSkKY29udHJhc3RzKGQ1JHNlbGZ1bnN1cmVnb2RyZWFsKSA8LSBjYmluZCgiWSIgPSBjKC0xLCAxKSkKCnI1IDwtIGdsbShnb2R2aWF2aXNpb25zX251bSB+IHNlbGZ1bnN1cmVnb2RyZWFsICsgY291bnRyeSwKICAgICAgICAgICAgICAgICAgZmFtaWx5ID0gImJpbm9taWFsIiwgZGF0YSA9IGQ1KQpzdW1tYXJ5KHI1KQpgYGAKCiMjIyBTcGlyaXR1YWwgZXhwZXJpZW5jZXMgaW5kZXhlZCBieSBgZ29kdmlhYm9keWV4cGVyaWVuY2VzYApfU29tZSBwZW9wbGUgaGF2ZSBwYXJ0aWN1bGFyIGV4cGVyaWVuY2VzIGluIHlvdXIgYm9keSB0aGF0IHRoZXkgYXNzb2NpYXRlIHdpdGggR29kKiBvciBzcGlyaXQuIERvZXMgdGhhdCBoYXBwZW4gZm9yIHlvdT8gW2V4YW1wbGVzOiB3YXJtIGhhbmRzLCBnb29zZWJ1bXBzLCBmaXJlIGluIHRoZSBiZWxseV1fCgpgYGB7ciwgZmlnLndpZHRoID0gMywgZmlnLmFzcCA9IDF9CmQgJT4lCiAgZmlsdGVyKCFpcy5uYShzZWxmdW5zdXJlZ29kcmVhbCksICFpcy5uYShnb2R2aWFib2R5ZXhwZXJpZW5jZXMpKSAlPiUgIywKICAgICAgICAgIyBzZWxmdW5zdXJlZ29kcmVhbCAhPSAiT3RoZXIiLCBnb2R2aWFib2R5ZXhwZXJpZW5jZXMgIT0gIk90aGVyIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc2VsZnVuc3VyZWdvZHJlYWwsIHkgPSBnb2R2aWFib2R5ZXhwZXJpZW5jZXMsIGNvbG9yID0gcmVzZWFyY2hlcikpICsKICBmYWNldF9ncmlkKHVyYmFuX3J1cmFsIH4gY2hhcmlzbWF0aWNfbG9jYWwgfiBjb3VudHJ5KSArCiAgZ2VvbV9wb2ludChhbHBoYSA9IDAuMywgcG9zaXRpb24gPSBwb3NpdGlvbl9qaXR0ZXIoMC4yLCAwLjIpKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGN1c3RvbV9wYWwpICsKICBsYWJzKHRpdGxlID0gcGFzdGUoInNlbGZ1bnN1cmVnb2RyZWFsIiwgImdvZHZpYWJvZHlleHBlcmllbmNlcyIsIHNlcCA9ICIgeCAiKSwKICAgICAgICMgc3VidGl0bGUgPSAiRXhjbHVkaW5nIHBlb3BsZSB3aG8gZGlkIG5vdCBoYXZlIGEgY2xlYXIgYW5zd2VyIiwKICAgICAgIHggPSAic2VsZnVuc3VyZWdvZHJlYWwiLAogICAgICAgeSA9ICJnb2R2aWFib2R5ZXhwZXJpZW5jZXMiLAogICAgICAgY29sb3IgPSAiUmVzZWFyY2hlciIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGd1aWRlcyhjb2xvciA9IGd1aWRlX2xlZ2VuZChuY29sID0gNiwgYnlyb3cgPSBUUlVFLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGUuYWVzID0gbGlzdChhbHBoYSA9IDEpKSkKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgZmlnLmFzcCA9IDF9CmQgJT4lCiAgZmlsdGVyKCFpcy5uYShzZWxmdW5zdXJlZ29kcmVhbCksICFpcy5uYShnb2R2aWFib2R5ZXhwZXJpZW5jZXMpLAogICAgICAgICBzZWxmdW5zdXJlZ29kcmVhbCAhPSAiT3RoZXIiLCBnb2R2aWFib2R5ZXhwZXJpZW5jZXMgIT0gIk90aGVyIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc2VsZnVuc3VyZWdvZHJlYWwsIGFscGhhID0gZ29kdmlhYm9keWV4cGVyaWVuY2VzLCBmaWxsID0gcmVzZWFyY2hlcikpICsKICBmYWNldF9ncmlkKHVyYmFuX3J1cmFsIH4gY2hhcmlzbWF0aWNfbG9jYWwgfiBjb3VudHJ5KSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsKICBnZW9tX3RleHQoZGF0YSA9IHNlbGZ1bnN1cmVnb2RyZWFsX2NvdW50X2J5X3F1YWQsCiAgICAgICAgICAgIGFlcyh4ID0gc2VsZnVuc3VyZWdvZHJlYWwsIHkgPSAxLCBhbHBoYSA9IE5VTEwsIGZpbGwgPSBOVUxMLAogICAgICAgICAgICAgICAgbGFiZWwgPSBwYXN0ZTAoIihuPSIsIG4sICIpIikpLAogICAgICAgICAgICBzaXplID0gMiwgbnVkZ2VfeSA9IDAuMDUpICsKICAjIHNjYWxlX2ZpbGxfYnJld2VyKGd1aWRlID0gTlVMTCwgcGFsZXR0ZSA9ICJEYXJrMiIpICsKICBzY2FsZV9maWxsX21hbnVhbChndWlkZSA9IE5VTEwsIHZhbHVlcyA9IGN1c3RvbV9wYWwpICsKICBzY2FsZV9hbHBoYV9kaXNjcmV0ZShyYW5nZSA9IGMoMC41LCAxKSkgKwogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwgMSwgMC4yNSkpICsKICBsYWJzKHRpdGxlID0gcGFzdGUoInNlbGZ1bnN1cmVnb2RyZWFsIiwgImdvZHZpYWJvZHlleHBlcmllbmNlcyIsIHNlcCA9ICIgeCAiKSwKICAgICAgIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gInNlbGZ1bnN1cmVnb2RyZWFsIiwKICAgICAgIHkgPSAiUHJvcG9ydGlvbiIsCiAgICAgICBhbHBoYSA9ICJnb2R2aWFib2R5ZXhwZXJpZW5jZXMiLAogICAgICAgZmlsbCA9ICJSZXNlYXJjaGVyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGFscGhhID0gZ3VpZGVfbGVnZW5kKCksCiAgICAgICAgIGZpbGwgPSAibm9uZSIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjV9CmQgJT4lCiAgZmlsdGVyKCFpcy5uYShzZWxmdW5zdXJlZ29kcmVhbCksICFpcy5uYShnb2R2aWFib2R5ZXhwZXJpZW5jZXMpLAogICAgICAgICBzZWxmdW5zdXJlZ29kcmVhbCAhPSAiT3RoZXIiLCBnb2R2aWFib2R5ZXhwZXJpZW5jZXMgIT0gIk90aGVyIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc2VsZnVuc3VyZWdvZHJlYWwsIGFscGhhID0gZ29kdmlhYm9keWV4cGVyaWVuY2VzLCBmaWxsID0gY291bnRyeSkpICsKICBmYWNldF9ncmlkKC4gfiBjb3VudHJ5KSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsKICBnZW9tX3RleHQoZGF0YSA9IHNlbGZ1bnN1cmVnb2RyZWFsX2NvdW50LAogICAgICAgICAgICBhZXMoeCA9IHNlbGZ1bnN1cmVnb2RyZWFsLCB5ID0gMSwgYWxwaGEgPSBOVUxMLCBmaWxsID0gTlVMTCwKICAgICAgICAgICAgICAgIGxhYmVsID0gcGFzdGUwKCIobj0iLCBuLCAiKSIpKSwKICAgICAgICAgICAgc2l6ZSA9IDIsIG51ZGdlX3kgPSAwLjA1KSArCiAgc2NhbGVfZmlsbF9icmV3ZXIoZ3VpZGUgPSBOVUxMLCBwYWxldHRlID0gIkRhcmsyIikgKwogICMgc2NhbGVfZmlsbF9tYW51YWwoZ3VpZGUgPSBOVUxMLCB2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUocmFuZ2UgPSBjKDAuNSwgMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJzZWxmdW5zdXJlZ29kcmVhbCIsICJnb2R2aWFib2R5ZXhwZXJpZW5jZXMiLCBzZXAgPSAiIHggIiksCiAgICAgICBzdWJ0aXRsZSA9ICJFeGNsdWRpbmcgcGVvcGxlIHdobyBkaWQgbm90IGhhdmUgYSBjbGVhciBhbnN3ZXIiLAogICAgICAgeCA9ICJzZWxmdW5zdXJlZ29kcmVhbCIsCiAgICAgICB5ID0gIlByb3BvcnRpb24iLAogICAgICAgYWxwaGEgPSAiZ29kdmlhYm9keWV4cGVyaWVuY2VzIiwKICAgICAgIGZpbGwgPSAiUmVzZWFyY2hlciIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGd1aWRlcyhhbHBoYSA9IGd1aWRlX2xlZ2VuZCgpLAogICAgICAgICBmaWxsID0gIm5vbmUiKQpgYGAKCmBgYHtyfQpkNiA8LSBkICU+JQogIGZpbHRlcighaXMubmEoc2VsZnVuc3VyZWdvZHJlYWwpLCAhaXMubmEoZ29kdmlhYm9keWV4cGVyaWVuY2VzKSwKICAgICAgICAgc2VsZnVuc3VyZWdvZHJlYWwgIT0gIk90aGVyIiwgZ29kdmlhYm9keWV4cGVyaWVuY2VzICE9ICJPdGhlciIsCiAgICAgICAgIHNlbGZ1bnN1cmVnb2RyZWFsICE9ICJNYXliZSIpICU+JQogIG11dGF0ZShzZWxmdW5zdXJlZ29kcmVhbCA9IGZhY3RvcihzZWxmdW5zdXJlZ29kcmVhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiTm8iLCAiWWVzIikpLAogICAgICAgICBzZWxmdW5zdXJlZ29kcmVhbF9udW0gPSBhcy5udW1lcmljKHNlbGZ1bnN1cmVnb2RyZWFsKSAtIDEsCiAgICAgICAgIGdvZHZpYWJvZHlleHBlcmllbmNlcyA9IGZhY3Rvcihnb2R2aWFib2R5ZXhwZXJpZW5jZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJObyIsICJZZXMiKSksCiAgICAgICAgIGdvZHZpYWJvZHlleHBlcmllbmNlc19udW0gPSBhcy5udW1lcmljKGdvZHZpYWJvZHlleHBlcmllbmNlcykgLSAxKSAlPiUKICBzZWxlY3QoY291bnRyeSwgcmVzZWFyY2hlciwgdXJiYW5fcnVyYWwsIGNoYXJpc21hdGljX2xvY2FsLCBzdWJqZWN0X25hbWUsCiAgICAgICAgIHN0YXJ0c193aXRoKCJzZWxmdW5zdXJlZ29kcmVhbCIpLCBzdGFydHNfd2l0aCgiZ29kdmlhYm9keWV4cGVyaWVuY2VzIikpCgpjb250cmFzdHMoZDYkY291bnRyeSkgPC0gY2JpbmQoIkdIIiA9IGMoLTEsIDEsIDAsIDAsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRIIiA9IGMoLTEsIDAsIDEsIDAsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNIIiA9IGMoLTEsIDAsIDAsIDEsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZUIiA9IGMoLTEsIDAsIDAsIDAsIDEpKQpjb250cmFzdHMoZDYkc2VsZnVuc3VyZWdvZHJlYWwpIDwtIGNiaW5kKCJZIiA9IGMoLTEsIDEpKQoKcjYgPC0gZ2xtKGdvZHZpYWJvZHlleHBlcmllbmNlc19udW0gfiBzZWxmdW5zdXJlZ29kcmVhbCArIGNvdW50cnksCiAgICAgICAgICAgICAgICAgIGZhbWlseSA9ICJiaW5vbWlhbCIsIGRhdGEgPSBkNikKc3VtbWFyeShyNikKYGBgCgojIyAiRG91YnQiIGluZHhlZCBieSBgbW9yZXF1ZXNtb3JlYW5zd3JgCgpfRG8geW91IHRoaW5rIHRoYXQgdGhlIG1vcmUgc3Bpcml0dWFsbHkgbWF0dXJlIHlvdSBiZWNvbWUsIHlvdSB3aWxsIGRpc2NvdmVyIG1vcmUgcXVlc3Rpb25zIG9yIG1vcmUgYW5zd2Vycz9fCgpgYGB7cn0KbW9yZXF1ZXNtb3JlYW5zd3JfY291bnQgPC0gZCAlPiUKICBmaWx0ZXIoIWlzLm5hKG1vcmVxdWVzbW9yZWFuc3dyKSwgIWlzLm5hKGdvZHZveGFsb3VkKSwKICAgICAgICAgbW9yZXF1ZXNtb3JlYW5zd3IgIT0gIk90aGVyIiwgZ29kdm94YWxvdWQgIT0gIk90aGVyIikgJT4lCiAgY291bnQoY291bnRyeSwgbW9yZXF1ZXNtb3JlYW5zd3IpICU+JQogIGRhdGEuZnJhbWUoKQoKbW9yZXF1ZXNtb3JlYW5zd3JfY291bnRfYnlfcXVhZCA8LSBkICU+JQogIGZpbHRlcighaXMubmEobW9yZXF1ZXNtb3JlYW5zd3IpLCAhaXMubmEoZ29kdm94YWxvdWQpLAogICAgICAgICBtb3JlcXVlc21vcmVhbnN3ciAhPSAiT3RoZXIiLCBnb2R2b3hhbG91ZCAhPSAiT3RoZXIiKSAlPiUKICBjb3VudChjb3VudHJ5LCB1cmJhbl9ydXJhbCwgY2hhcmlzbWF0aWNfbG9jYWwsIG1vcmVxdWVzbW9yZWFuc3dyKSAlPiUKICBkYXRhLmZyYW1lKCkKYGBgCgojIyMgU3Bpcml0dWFsIGV4cGVyaWVuY2VzIGluZGV4ZWQgYnkgYGdvZHZveGFsb3VkYApfU29tZSBwZW9wbGUgc2F5IHRoYXQgdGhleSBoYXZlIGhlYXJkIEdvZCogc3BlYWsgb3V0IGxvdWQgdG8gdGhlbS4gSGFzIHRoaXMgZXZlciBoYXBwZW5lZCB0byB5b3U/XwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpkICU+JQogIGZpbHRlcighaXMubmEobW9yZXF1ZXNtb3JlYW5zd3IpLCAhaXMubmEoZ29kdm94YWxvdWQpKSAlPiUgIywKICAgICAgICAgIyBtb3JlcXVlc21vcmVhbnN3ciAhPSAiT3RoZXIiLCBnb2R2b3hhbG91ZCAhPSAiT3RoZXIiKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBtb3JlcXVlc21vcmVhbnN3ciwgeSA9IGdvZHZveGFsb3VkLCBjb2xvciA9IHJlc2VhcmNoZXIpKSArCiAgZmFjZXRfZ3JpZCh1cmJhbl9ydXJhbCB+IGNoYXJpc21hdGljX2xvY2FsIH4gY291bnRyeSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjMsIHBvc2l0aW9uID0gcG9zaXRpb25faml0dGVyKDAuMiwgMC4yKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJtb3JlcXVlc21vcmVhbnN3ciIsICJnb2R2b3hhbG91ZCIsIHNlcCA9ICIgeCAiKSwKICAgICAgICMgc3VidGl0bGUgPSAiRXhjbHVkaW5nIHBlb3BsZSB3aG8gZGlkIG5vdCBoYXZlIGEgY2xlYXIgYW5zd2VyIiwKICAgICAgIHggPSAibW9yZXF1ZXNtb3JlYW5zd3IiLAogICAgICAgeSA9ICJnb2R2b3hhbG91ZCIsCiAgICAgICBjb2xvciA9ICJSZXNlYXJjaGVyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGNvbG9yID0gZ3VpZGVfbGVnZW5kKG5jb2wgPSA2LCBieXJvdyA9IFRSVUUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZS5hZXMgPSBsaXN0KGFscGhhID0gMSkpKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMX0KZCAlPiUKICBmaWx0ZXIoIWlzLm5hKG1vcmVxdWVzbW9yZWFuc3dyKSwgIWlzLm5hKGdvZHZveGFsb3VkKSwKICAgICAgICAgbW9yZXF1ZXNtb3JlYW5zd3IgIT0gIk90aGVyIiwgZ29kdm94YWxvdWQgIT0gIk90aGVyIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9yZXF1ZXNtb3JlYW5zd3IsIGFscGhhID0gZ29kdm94YWxvdWQsIGZpbGwgPSByZXNlYXJjaGVyKSkgKwogIGZhY2V0X2dyaWQodXJiYW5fcnVyYWwgfiBjaGFyaXNtYXRpY19sb2NhbCB+IGNvdW50cnkpICsKICBnZW9tX2Jhcihwb3NpdGlvbiA9ICJmaWxsIikgKwogIGdlb21fdGV4dChkYXRhID0gbW9yZXF1ZXNtb3JlYW5zd3JfY291bnRfYnlfcXVhZCwKICAgICAgICAgICAgYWVzKHggPSBtb3JlcXVlc21vcmVhbnN3ciwgeSA9IDEsIGFscGhhID0gTlVMTCwgZmlsbCA9IE5VTEwsCiAgICAgICAgICAgICAgICBsYWJlbCA9IHBhc3RlMCgiKG49IiwgbiwgIikiKSksCiAgICAgICAgICAgIHNpemUgPSAyLCBudWRnZV95ID0gMC4wNSkgKwogICMgc2NhbGVfZmlsbF9icmV3ZXIoZ3VpZGUgPSBOVUxMLCBwYWxldHRlID0gIkRhcmsyIikgKwogIHNjYWxlX2ZpbGxfbWFudWFsKGd1aWRlID0gTlVMTCwgdmFsdWVzID0gY3VzdG9tX3BhbCkgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKHJhbmdlID0gYygwLjUsIDEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjI1KSkgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgibW9yZXF1ZXNtb3JlYW5zd3IiLCAiZ29kdm94YWxvdWQiLCBzZXAgPSAiIHggIiksCiAgICAgICBzdWJ0aXRsZSA9ICJFeGNsdWRpbmcgcGVvcGxlIHdobyBkaWQgbm90IGhhdmUgYSBjbGVhciBhbnN3ZXIiLAogICAgICAgeCA9ICJtb3JlcXVlc21vcmVhbnN3ciIsCiAgICAgICB5ID0gIlByb3BvcnRpb24iLAogICAgICAgYWxwaGEgPSAiZ29kdm94YWxvdWQiLAogICAgICAgZmlsbCA9ICJSZXNlYXJjaGVyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGFscGhhID0gZ3VpZGVfbGVnZW5kKCksCiAgICAgICAgIGZpbGwgPSAibm9uZSIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjV9CmQgJT4lCiAgZmlsdGVyKCFpcy5uYShtb3JlcXVlc21vcmVhbnN3ciksICFpcy5uYShnb2R2b3hhbG91ZCksCiAgICAgICAgIG1vcmVxdWVzbW9yZWFuc3dyICE9ICJPdGhlciIsIGdvZHZveGFsb3VkICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IG1vcmVxdWVzbW9yZWFuc3dyLCBhbHBoYSA9IGdvZHZveGFsb3VkLCBmaWxsID0gY291bnRyeSkpICsKICBmYWNldF9ncmlkKC4gfiBjb3VudHJ5KSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsKICBnZW9tX3RleHQoZGF0YSA9IG1vcmVxdWVzbW9yZWFuc3dyX2NvdW50LAogICAgICAgICAgICBhZXMoeCA9IG1vcmVxdWVzbW9yZWFuc3dyLCB5ID0gMSwgYWxwaGEgPSBOVUxMLCBmaWxsID0gTlVMTCwKICAgICAgICAgICAgICAgIGxhYmVsID0gcGFzdGUwKCIobj0iLCBuLCAiKSIpKSwKICAgICAgICAgICAgc2l6ZSA9IDIsIG51ZGdlX3kgPSAwLjA1KSArCiAgc2NhbGVfZmlsbF9icmV3ZXIoZ3VpZGUgPSBOVUxMLCBwYWxldHRlID0gIkRhcmsyIikgKwogICMgc2NhbGVfZmlsbF9tYW51YWwoZ3VpZGUgPSBOVUxMLCB2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUocmFuZ2UgPSBjKDAuNSwgMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJtb3JlcXVlc21vcmVhbnN3ciIsICJnb2R2b3hhbG91ZCIsIHNlcCA9ICIgeCAiKSwKICAgICAgIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gIm1vcmVxdWVzbW9yZWFuc3dyIiwKICAgICAgIHkgPSAiUHJvcG9ydGlvbiIsCiAgICAgICBhbHBoYSA9ICJnb2R2b3hhbG91ZCIsCiAgICAgICBmaWxsID0gIlJlc2VhcmNoZXIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBndWlkZXMoYWxwaGEgPSBndWlkZV9sZWdlbmQoKSwKICAgICAgICAgZmlsbCA9ICJub25lIikKYGBgCgpgYGB7cn0KZDcgPC0gZCAlPiUKICBmaWx0ZXIoIWlzLm5hKG1vcmVxdWVzbW9yZWFuc3dyKSwgIWlzLm5hKGdvZHZveGFsb3VkKSwKICAgICAgICAgbW9yZXF1ZXNtb3JlYW5zd3IgIT0gIk90aGVyIiwgZ29kdm94YWxvdWQgIT0gIk90aGVyIikgJT4lCiAgbXV0YXRlKG1vcmVxdWVzbW9yZWFuc3dyID0gZmFjdG9yKG1vcmVxdWVzbW9yZWFuc3dyKSwKICAgICAgICAgbW9yZXF1ZXNtb3JlYW5zd3JfbnVtID0gYXMubnVtZXJpYyhtb3JlcXVlc21vcmVhbnN3cikgLSAxLAogICAgICAgICBnb2R2b3hhbG91ZCA9IGZhY3Rvcihnb2R2b3hhbG91ZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIk5vIiwgIlllcyIpKSwKICAgICAgICAgZ29kdm94YWxvdWRfbnVtID0gYXMubnVtZXJpYyhnb2R2b3hhbG91ZCkgLSAxKSAlPiUKICBzZWxlY3QoY291bnRyeSwgcmVzZWFyY2hlciwgdXJiYW5fcnVyYWwsIGNoYXJpc21hdGljX2xvY2FsLCBzdWJqZWN0X25hbWUsCiAgICAgICAgIHN0YXJ0c193aXRoKCJtb3JlcXVlc21vcmVhbnN3ciIpLCBzdGFydHNfd2l0aCgiZ29kdm94YWxvdWQiKSkKCmNvbnRyYXN0cyhkNyRjb3VudHJ5KSA8LSBjYmluZCgiR0giID0gYygtMSwgMSwgMCwgMCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVEgiID0gYygtMSwgMCwgMSwgMCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ0giID0gYygtMSwgMCwgMCwgMSwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVlQiID0gYygtMSwgMCwgMCwgMCwgMSkpCmNvbnRyYXN0cyhkNyRtb3JlcXVlc21vcmVhbnN3cikgPC0gY2JpbmQoIlEiID0gYygxLCAtMSkpCgpyNyA8LSBnbG0oZ29kdm94YWxvdWRfbnVtIH4gbW9yZXF1ZXNtb3JlYW5zd3IgKyBjb3VudHJ5LAogICAgICAgICAgICAgICAgICBmYW1pbHkgPSAiYmlub21pYWwiLCBkYXRhID0gZDcpCnN1bW1hcnkocjcpCmBgYAoKIyMjIFNwaXJpdHVhbCBleHBlcmllbmNlcyBpbmRleGVkIGJ5IGBnb2R2aWF2aXNpb25zYApfU29tZSBwZW9wbGUgc2F5IHRoYXQgdGhleSBoYXZlIGhhZCBhIHZpc2lvbiBmcm9tIEdvZCrigJR0aGV5IGhhdmUgYSBwaWN0dXJlLCBidXQgaXQgaXMgbGlrZSB0aGV5IHNlZSBpdCB3aXRoIHRoZWlyIGV5ZXMuIEhhcyBhbnl0aGluZyBsaWtlIHRoYXQgaGFwcGVuZWQgdG8geW91P18KCmBgYHtyLCBmaWcud2lkdGggPSAzLCBmaWcuYXNwID0gMX0KZCAlPiUKICBmaWx0ZXIoIWlzLm5hKG1vcmVxdWVzbW9yZWFuc3dyKSwgIWlzLm5hKGdvZHZpYXZpc2lvbnMpKSAlPiUgIywKICAgICAgICAgIyBtb3JlcXVlc21vcmVhbnN3ciAhPSAiT3RoZXIiLCBnb2R2aWF2aXNpb25zICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IG1vcmVxdWVzbW9yZWFuc3dyLCB5ID0gZ29kdmlhdmlzaW9ucywgY29sb3IgPSByZXNlYXJjaGVyKSkgKwogIGZhY2V0X2dyaWQodXJiYW5fcnVyYWwgfiBjaGFyaXNtYXRpY19sb2NhbCB+IGNvdW50cnkpICsKICBnZW9tX3BvaW50KGFscGhhID0gMC4zLCBwb3NpdGlvbiA9IHBvc2l0aW9uX2ppdHRlcigwLjIsIDAuMikpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gY3VzdG9tX3BhbCkgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgibW9yZXF1ZXNtb3JlYW5zd3IiLCAiZ29kdmlhdmlzaW9ucyIsIHNlcCA9ICIgeCAiKSwKICAgICAgICMgc3VidGl0bGUgPSAiRXhjbHVkaW5nIHBlb3BsZSB3aG8gZGlkIG5vdCBoYXZlIGEgY2xlYXIgYW5zd2VyIiwKICAgICAgIHggPSAibW9yZXF1ZXNtb3JlYW5zd3IiLAogICAgICAgeSA9ICJnb2R2aWF2aXNpb25zIiwKICAgICAgIGNvbG9yID0gIlJlc2VhcmNoZXIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBndWlkZXMoY29sb3IgPSBndWlkZV9sZWdlbmQobmNvbCA9IDYsIGJ5cm93ID0gVFJVRSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlLmFlcyA9IGxpc3QoYWxwaGEgPSAxKSkpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpkICU+JQogIGZpbHRlcighaXMubmEobW9yZXF1ZXNtb3JlYW5zd3IpLCAhaXMubmEoZ29kdmlhdmlzaW9ucyksCiAgICAgICAgIG1vcmVxdWVzbW9yZWFuc3dyICE9ICJPdGhlciIsIGdvZHZpYXZpc2lvbnMgIT0gIk90aGVyIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gbW9yZXF1ZXNtb3JlYW5zd3IsIGFscGhhID0gZ29kdmlhdmlzaW9ucywgZmlsbCA9IHJlc2VhcmNoZXIpKSArCiAgZmFjZXRfZ3JpZCh1cmJhbl9ydXJhbCB+IGNoYXJpc21hdGljX2xvY2FsIH4gY291bnRyeSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBtb3JlcXVlc21vcmVhbnN3cl9jb3VudF9ieV9xdWFkLAogICAgICAgICAgICBhZXMoeCA9IG1vcmVxdWVzbW9yZWFuc3dyLCB5ID0gMSwgYWxwaGEgPSBOVUxMLCBmaWxsID0gTlVMTCwKICAgICAgICAgICAgICAgIGxhYmVsID0gcGFzdGUwKCIobj0iLCBuLCAiKSIpKSwKICAgICAgICAgICAgc2l6ZSA9IDIsIG51ZGdlX3kgPSAwLjA1KSArCiAgIyBzY2FsZV9maWxsX2JyZXdlcihndWlkZSA9IE5VTEwsIHBhbGV0dGUgPSAiRGFyazIiKSArCiAgc2NhbGVfZmlsbF9tYW51YWwoZ3VpZGUgPSBOVUxMLCB2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUocmFuZ2UgPSBjKDAuNSwgMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJtb3JlcXVlc21vcmVhbnN3ciIsICJnb2R2aWF2aXNpb25zIiwgc2VwID0gIiB4ICIpLAogICAgICAgc3VidGl0bGUgPSAiRXhjbHVkaW5nIHBlb3BsZSB3aG8gZGlkIG5vdCBoYXZlIGEgY2xlYXIgYW5zd2VyIiwKICAgICAgIHggPSAibW9yZXF1ZXNtb3JlYW5zd3IiLAogICAgICAgeSA9ICJQcm9wb3J0aW9uIiwKICAgICAgIGFscGhhID0gImdvZHZpYXZpc2lvbnMiLAogICAgICAgZmlsbCA9ICJSZXNlYXJjaGVyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGFscGhhID0gZ3VpZGVfbGVnZW5kKCksCiAgICAgICAgIGZpbGwgPSAibm9uZSIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjV9CmQgJT4lCiAgZmlsdGVyKCFpcy5uYShtb3JlcXVlc21vcmVhbnN3ciksICFpcy5uYShnb2R2aWF2aXNpb25zKSwKICAgICAgICAgbW9yZXF1ZXNtb3JlYW5zd3IgIT0gIk90aGVyIiwgZ29kdmlhdmlzaW9ucyAhPSAiT3RoZXIiKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBtb3JlcXVlc21vcmVhbnN3ciwgYWxwaGEgPSBnb2R2aWF2aXNpb25zLCBmaWxsID0gY291bnRyeSkpICsKICBmYWNldF9ncmlkKC4gfiBjb3VudHJ5KSArCiAgZ2VvbV9iYXIocG9zaXRpb24gPSAiZmlsbCIpICsKICBnZW9tX3RleHQoZGF0YSA9IG1vcmVxdWVzbW9yZWFuc3dyX2NvdW50LAogICAgICAgICAgICBhZXMoeCA9IG1vcmVxdWVzbW9yZWFuc3dyLCB5ID0gMSwgYWxwaGEgPSBOVUxMLCBmaWxsID0gTlVMTCwKICAgICAgICAgICAgICAgIGxhYmVsID0gcGFzdGUwKCIobj0iLCBuLCAiKSIpKSwKICAgICAgICAgICAgc2l6ZSA9IDIsIG51ZGdlX3kgPSAwLjA1KSArCiAgc2NhbGVfZmlsbF9icmV3ZXIoZ3VpZGUgPSBOVUxMLCBwYWxldHRlID0gIkRhcmsyIikgKwogICMgc2NhbGVfZmlsbF9tYW51YWwoZ3VpZGUgPSBOVUxMLCB2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUocmFuZ2UgPSBjKDAuNSwgMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJtb3JlcXVlc21vcmVhbnN3ciIsICJnb2R2aWF2aXNpb25zIiwgc2VwID0gIiB4ICIpLAogICAgICAgc3VidGl0bGUgPSAiRXhjbHVkaW5nIHBlb3BsZSB3aG8gZGlkIG5vdCBoYXZlIGEgY2xlYXIgYW5zd2VyIiwKICAgICAgIHggPSAibW9yZXF1ZXNtb3JlYW5zd3IiLAogICAgICAgeSA9ICJQcm9wb3J0aW9uIiwKICAgICAgIGFscGhhID0gImdvZHZpYXZpc2lvbnMiLAogICAgICAgZmlsbCA9ICJSZXNlYXJjaGVyIikgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiLAogICAgICAgIGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGhqdXN0ID0gMSwgdmp1c3QgPSAwLjUpKSArCiAgZ3VpZGVzKGFscGhhID0gZ3VpZGVfbGVnZW5kKCksCiAgICAgICAgIGZpbGwgPSAibm9uZSIpCmBgYAoKYGBge3J9CmQ4IDwtIGQgJT4lCiAgZmlsdGVyKCFpcy5uYShtb3JlcXVlc21vcmVhbnN3ciksICFpcy5uYShnb2R2aWF2aXNpb25zKSwKICAgICAgICAgbW9yZXF1ZXNtb3JlYW5zd3IgIT0gIk90aGVyIiwgZ29kdmlhdmlzaW9ucyAhPSAiT3RoZXIiKSAlPiUKICBtdXRhdGUobW9yZXF1ZXNtb3JlYW5zd3IgPSBmYWN0b3IobW9yZXF1ZXNtb3JlYW5zd3IpLAogICAgICAgICBtb3JlcXVlc21vcmVhbnN3cl9udW0gPSBhcy5udW1lcmljKG1vcmVxdWVzbW9yZWFuc3dyKSAtIDEsCiAgICAgICAgIGdvZHZpYXZpc2lvbnMgPSBmYWN0b3IoZ29kdmlhdmlzaW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIk5vIiwgIlllcyIpKSwKICAgICAgICAgZ29kdmlhdmlzaW9uc19udW0gPSBhcy5udW1lcmljKGdvZHZpYXZpc2lvbnMpIC0gMSkgJT4lCiAgc2VsZWN0KGNvdW50cnksIHJlc2VhcmNoZXIsIHVyYmFuX3J1cmFsLCBjaGFyaXNtYXRpY19sb2NhbCwgc3ViamVjdF9uYW1lLAogICAgICAgICBzdGFydHNfd2l0aCgibW9yZXF1ZXNtb3JlYW5zd3IiKSwgc3RhcnRzX3dpdGgoImdvZHZpYXZpc2lvbnMiKSkKCmNvbnRyYXN0cyhkOCRjb3VudHJ5KSA8LSBjYmluZCgiR0giID0gYygtMSwgMSwgMCwgMCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVEgiID0gYygtMSwgMCwgMSwgMCwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ0giID0gYygtMSwgMCwgMCwgMSwgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVlQiID0gYygtMSwgMCwgMCwgMCwgMSkpCmNvbnRyYXN0cyhkOCRtb3JlcXVlc21vcmVhbnN3cikgPC0gY2JpbmQoIlEiID0gYygxLCAtMSkpCgpyOCA8LSBnbG0oZ29kdmlhdmlzaW9uc19udW0gfiBtb3JlcXVlc21vcmVhbnN3ciArIGNvdW50cnksCiAgICAgICAgICAgICAgICAgIGZhbWlseSA9ICJiaW5vbWlhbCIsIGRhdGEgPSBkOCkKc3VtbWFyeShyOCkKYGBgCgojIyMgU3Bpcml0dWFsIGV4cGVyaWVuY2VzIGluZGV4ZWQgYnkgYGdvZHZpYWJvZHlleHBlcmllbmNlc2AKX1NvbWUgcGVvcGxlIGhhdmUgcGFydGljdWxhciBleHBlcmllbmNlcyBpbiB5b3VyIGJvZHkgdGhhdCB0aGV5IGFzc29jaWF0ZSB3aXRoIEdvZCogb3Igc3Bpcml0LiBEb2VzIHRoYXQgaGFwcGVuIGZvciB5b3U/IFtleGFtcGxlczogd2FybSBoYW5kcywgZ29vc2VidW1wcywgZmlyZSBpbiB0aGUgYmVsbHldXwoKYGBge3IsIGZpZy53aWR0aCA9IDMsIGZpZy5hc3AgPSAxfQpkICU+JQogIGZpbHRlcighaXMubmEobW9yZXF1ZXNtb3JlYW5zd3IpLCAhaXMubmEoZ29kdmlhYm9keWV4cGVyaWVuY2VzKSkgJT4lICMsCiAgICAgICAgICMgbW9yZXF1ZXNtb3JlYW5zd3IgIT0gIk90aGVyIiwgZ29kdmlhYm9keWV4cGVyaWVuY2VzICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IG1vcmVxdWVzbW9yZWFuc3dyLCB5ID0gZ29kdmlhYm9keWV4cGVyaWVuY2VzLCBjb2xvciA9IHJlc2VhcmNoZXIpKSArCiAgZmFjZXRfZ3JpZCh1cmJhbl9ydXJhbCB+IGNoYXJpc21hdGljX2xvY2FsIH4gY291bnRyeSkgKwogIGdlb21fcG9pbnQoYWxwaGEgPSAwLjMsIHBvc2l0aW9uID0gcG9zaXRpb25faml0dGVyKDAuMiwgMC4yKSkgKwogIHNjYWxlX2NvbG9yX21hbnVhbCh2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJtb3JlcXVlc21vcmVhbnN3ciIsICJnb2R2aWFib2R5ZXhwZXJpZW5jZXMiLCBzZXAgPSAiIHggIiksCiAgICAgICAjIHN1YnRpdGxlID0gIkV4Y2x1ZGluZyBwZW9wbGUgd2hvIGRpZCBub3QgaGF2ZSBhIGNsZWFyIGFuc3dlciIsCiAgICAgICB4ID0gIm1vcmVxdWVzbW9yZWFuc3dyIiwKICAgICAgIHkgPSAiZ29kdmlhYm9keWV4cGVyaWVuY2VzIiwKICAgICAgIGNvbG9yID0gIlJlc2VhcmNoZXIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBndWlkZXMoY29sb3IgPSBndWlkZV9sZWdlbmQobmNvbCA9IDYsIGJ5cm93ID0gVFJVRSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlLmFlcyA9IGxpc3QoYWxwaGEgPSAxKSkpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAxfQpkICU+JQogIGZpbHRlcighaXMubmEobW9yZXF1ZXNtb3JlYW5zd3IpLCAhaXMubmEoZ29kdmlhYm9keWV4cGVyaWVuY2VzKSwKICAgICAgICAgbW9yZXF1ZXNtb3JlYW5zd3IgIT0gIk90aGVyIiwgZ29kdmlhYm9keWV4cGVyaWVuY2VzICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IG1vcmVxdWVzbW9yZWFuc3dyLCBhbHBoYSA9IGdvZHZpYWJvZHlleHBlcmllbmNlcywgZmlsbCA9IHJlc2VhcmNoZXIpKSArCiAgZmFjZXRfZ3JpZCh1cmJhbl9ydXJhbCB+IGNoYXJpc21hdGljX2xvY2FsIH4gY291bnRyeSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBtb3JlcXVlc21vcmVhbnN3cl9jb3VudF9ieV9xdWFkLAogICAgICAgICAgICBhZXMoeCA9IG1vcmVxdWVzbW9yZWFuc3dyLCB5ID0gMSwgYWxwaGEgPSBOVUxMLCBmaWxsID0gTlVMTCwKICAgICAgICAgICAgICAgIGxhYmVsID0gcGFzdGUwKCIobj0iLCBuLCAiKSIpKSwKICAgICAgICAgICAgc2l6ZSA9IDIsIG51ZGdlX3kgPSAwLjA1KSArCiAgIyBzY2FsZV9maWxsX2JyZXdlcihndWlkZSA9IE5VTEwsIHBhbGV0dGUgPSAiRGFyazIiKSArCiAgc2NhbGVfZmlsbF9tYW51YWwoZ3VpZGUgPSBOVUxMLCB2YWx1ZXMgPSBjdXN0b21fcGFsKSArCiAgc2NhbGVfYWxwaGFfZGlzY3JldGUocmFuZ2UgPSBjKDAuNSwgMSkpICsKICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDAsIDEsIDAuMjUpKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCJtb3JlcXVlc21vcmVhbnN3ciIsICJnb2R2aWFib2R5ZXhwZXJpZW5jZXMiLCBzZXAgPSAiIHggIiksCiAgICAgICBzdWJ0aXRsZSA9ICJFeGNsdWRpbmcgcGVvcGxlIHdobyBkaWQgbm90IGhhdmUgYSBjbGVhciBhbnN3ZXIiLAogICAgICAgeCA9ICJtb3JlcXVlc21vcmVhbnN3ciIsCiAgICAgICB5ID0gIlByb3BvcnRpb24iLAogICAgICAgYWxwaGEgPSAiZ29kdmlhYm9keWV4cGVyaWVuY2VzIiwKICAgICAgIGZpbGwgPSAiUmVzZWFyY2hlciIpICsKICB0aGVtZV9idygpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAidG9wIiwKICAgICAgICBheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDkwLCBoanVzdCA9IDEsIHZqdXN0ID0gMC41KSkgKwogIGd1aWRlcyhhbHBoYSA9IGd1aWRlX2xlZ2VuZCgpLAogICAgICAgICBmaWxsID0gIm5vbmUiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMC41fQpkICU+JQogIGZpbHRlcighaXMubmEobW9yZXF1ZXNtb3JlYW5zd3IpLCAhaXMubmEoZ29kdmlhYm9keWV4cGVyaWVuY2VzKSwKICAgICAgICAgbW9yZXF1ZXNtb3JlYW5zd3IgIT0gIk90aGVyIiwgZ29kdmlhYm9keWV4cGVyaWVuY2VzICE9ICJPdGhlciIpICU+JQogIGdncGxvdChhZXMoeCA9IG1vcmVxdWVzbW9yZWFuc3dyLCBhbHBoYSA9IGdvZHZpYWJvZHlleHBlcmllbmNlcywgZmlsbCA9IGNvdW50cnkpKSArCiAgZmFjZXRfZ3JpZCguIH4gY291bnRyeSkgKwogIGdlb21fYmFyKHBvc2l0aW9uID0gImZpbGwiKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBtb3JlcXVlc21vcmVhbnN3cl9jb3VudCwKICAgICAgICAgICAgYWVzKHggPSBtb3JlcXVlc21vcmVhbnN3ciwgeSA9IDEsIGFscGhhID0gTlVMTCwgZmlsbCA9IE5VTEwsCiAgICAgICAgICAgICAgICBsYWJlbCA9IHBhc3RlMCgiKG49IiwgbiwgIikiKSksCiAgICAgICAgICAgIHNpemUgPSAyLCBudWRnZV95ID0gMC4wNSkgKwogIHNjYWxlX2ZpbGxfYnJld2VyKGd1aWRlID0gTlVMTCwgcGFsZXR0ZSA9ICJEYXJrMiIpICsKICAjIHNjYWxlX2ZpbGxfbWFudWFsKGd1aWRlID0gTlVMTCwgdmFsdWVzID0gY3VzdG9tX3BhbCkgKwogIHNjYWxlX2FscGhhX2Rpc2NyZXRlKHJhbmdlID0gYygwLjUsIDEpKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLCAxLCAwLjI1KSkgKwogIGxhYnModGl0bGUgPSBwYXN0ZSgibW9yZXF1ZXNtb3JlYW5zd3IiLCAiZ29kdmlhYm9keWV4cGVyaWVuY2VzIiwgc2VwID0gIiB4ICIpLAogICAgICAgc3VidGl0bGUgPSAiRXhjbHVkaW5nIHBlb3BsZSB3aG8gZGlkIG5vdCBoYXZlIGEgY2xlYXIgYW5zd2VyIiwKICAgICAgIHggPSAibW9yZXF1ZXNtb3JlYW5zd3IiLAogICAgICAgeSA9ICJQcm9wb3J0aW9uIiwKICAgICAgIGFscGhhID0gImdvZHZpYWJvZHlleHBlcmllbmNlcyIsCiAgICAgICBmaWxsID0gIlJlc2VhcmNoZXIiKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInRvcCIsCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxLCB2anVzdCA9IDAuNSkpICsKICBndWlkZXMoYWxwaGEgPSBndWlkZV9sZWdlbmQoKSwKICAgICAgICAgZmlsbCA9ICJub25lIikKYGBgCgpgYGB7cn0KZDkgPC0gZCAlPiUKICBmaWx0ZXIoIWlzLm5hKG1vcmVxdWVzbW9yZWFuc3dyKSwgIWlzLm5hKGdvZHZpYWJvZHlleHBlcmllbmNlcyksCiAgICAgICAgIG1vcmVxdWVzbW9yZWFuc3dyICE9ICJPdGhlciIsIGdvZHZpYWJvZHlleHBlcmllbmNlcyAhPSAiT3RoZXIiKSAlPiUKICBtdXRhdGUobW9yZXF1ZXNtb3JlYW5zd3IgPSBmYWN0b3IobW9yZXF1ZXNtb3JlYW5zd3IpLAogICAgICAgICBtb3JlcXVlc21vcmVhbnN3cl9udW0gPSBhcy5udW1lcmljKG1vcmVxdWVzbW9yZWFuc3dyKSAtIDEsCiAgICAgICAgIGdvZHZpYWJvZHlleHBlcmllbmNlcyA9IGZhY3Rvcihnb2R2aWFib2R5ZXhwZXJpZW5jZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJObyIsICJZZXMiKSksCiAgICAgICAgIGdvZHZpYWJvZHlleHBlcmllbmNlc19udW0gPSBhcy5udW1lcmljKGdvZHZpYWJvZHlleHBlcmllbmNlcykgLSAxKSAlPiUKICBzZWxlY3QoY291bnRyeSwgcmVzZWFyY2hlciwgdXJiYW5fcnVyYWwsIGNoYXJpc21hdGljX2xvY2FsLCBzdWJqZWN0X25hbWUsCiAgICAgICAgIHN0YXJ0c193aXRoKCJtb3JlcXVlc21vcmVhbnN3ciIpLCBzdGFydHNfd2l0aCgiZ29kdmlhYm9keWV4cGVyaWVuY2VzIikpCgpjb250cmFzdHMoZDkkY291bnRyeSkgPC0gY2JpbmQoIkdIIiA9IGMoLTEsIDEsIDAsIDAsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRIIiA9IGMoLTEsIDAsIDEsIDAsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNIIiA9IGMoLTEsIDAsIDAsIDEsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZUIiA9IGMoLTEsIDAsIDAsIDAsIDEpKQpjb250cmFzdHMoZDkkbW9yZXF1ZXNtb3JlYW5zd3IpIDwtIGNiaW5kKCJRIiA9IGMoMSwgLTEpKQoKcjkgPC0gZ2xtKGdvZHZpYWJvZHlleHBlcmllbmNlc19udW0gfiBtb3JlcXVlc21vcmVhbnN3ciArIGNvdW50cnksCiAgICAgICAgICAgICAgICAgIGZhbWlseSA9ICJiaW5vbWlhbCIsIGRhdGEgPSBkOSkKc3VtbWFyeShyOSkKYGBgCgojIFRvIGRvCgpIZXJlIGFyZSBvdGhlciB0aGluZ3Mgb24gb3VyIHRvLWRvIGxpc3Q6CgotIEV4cGVyaWVuY2VzIGJ5IHNlbnNlIChKb3NoKQotIEV4dHJlbWl0eSBvZiBleHBlcmllbmNlcyAoSm9zaCkKLSAuLi4K